2016-06-17 15 views
0

なぜこの新しいプロジェクトで問題が発生しているのか困惑しています。 コントローラがjspファイルの名前を定義する文字列を返すたびに、Springが特定のディレクトリ内の特定の名前を持つjspファイルを確実に返すようにするだけです。この場合Spring View Resolver returns 404

@Controller 
public class TestController { 

    @RequestMapping("/test") 
    public String test2(HttpServletResponse response, HttpServletRequest request) { 
     System.out.println("Returning test.jsp"); 
     return "test"; 
    } 

} 

とビューリゾルバ...

@Bean 
public InternalResourceViewResolver viewResolver() { 
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
    viewResolver.setViewClass(JstlView.class); 
    viewResolver.setPrefix("/WEB-INF/views/"); 
    viewResolver.setSuffix(".jsp"); 
    return viewResolver; 
} 

、私は/ domain.com/testのコントローラは、「SRC /メイン/ webappの/ WEB-INF /ビューを表示することを期待test.jsp "これは私のすべての古いプロジェクトではうまく機能しているようですが、この設定では協力しないで404エラーが発生します。

表示する正しいjspファイルが見つからないのはなぜですか?

編集:問題が解決され、解決策が下に掲載されます。

+0

あなたのビューリゾルバの設定はうまくいくようです。コントローラが呼び出されていることを確認しますか? 'System.out.println(" return test.jsp ");は何も印刷していませんか?また、 'war'ファイルにビューが含まれていることを確認してください。 –

+0

プリントが確実に行われているため、コントローラが呼び出されることはありません。 私は単にeclipseで起動していて、ファイルが存在するため、warファイルが違いを生み出すとは思わないでください。 – Kyanite

答えて

0

は、問題を解決しました。 期待どおり、それは何かばかげたものでした。

問題は、Apache Tomcatの依存関係がpom.xmlに存在しないことになりました。 今後の参照用:

<dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-jasper</artifactId> 
     <scope>provided</scope> 
    </dependency> 
0

あなたは春の構成で、あなたのコントローラを登録していますか?(@ComponentScanまたは<context:component-scan .../>)を

+0

正直言ってこれをする前にこれをしなくてはいけませんでした。コントローラーが呼び出されているので、問題ではないはずです。 – Kyanite

+0

web.xmlまたはWebApplicationInitializerでディスパッチャのマッピングを確認することもできます – noobsaibot