spring-boot プロジェクト (java -jar /path/to/war.war) を実行すると、.jsp ファイルが見つかりません。
@ResponseBody でアノテーションが付けられたメソッドは正常に機能します。ビュー リゾルバは JSP ページへの正しいパスを見つけようとしていますが、それらが見つかりません。このプロジェクトには 1 つの構成クラスがあり、web.xml はありません。
構成クラス:
@Configuration
@EnableAutoConfiguration
@EnableWebMvc
@ComponentScan (basePackages = "org.ghc.security.web")
class ScMain extends WebMvcConfigurerAdapter {
// SpringBoot BootStrap...
static void main (String[] args) {
ApplicationContext ctx = SpringApplication.run (ScMain, args)
System.out.println("Let's inspect the beans provided by Spring Boot:");
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
beanNames.each { beanName ->
System.out.println(beanName);
}
}
@Bean
InternalResourceViewResolver internalResourceViewResolver () {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver()
viewResolver.setPrefix("/WEB-INF/jsp/")
viewResolver.setSuffix(".jsp")
viewResolver
}
}
コントローラ
@Controller
class Running {
@RequestMapping ("/alive") // This works fine
@ResponseBody
String amIAlive () {
"ALIVE!"
}
@RequestMapping ("/alive/page") // Path to page resolved, but file not found!
ModelAndView amIAlivePage () {
new ModelAndView("alivepage")
}
}
エラーログ
2013-11-25 09:08:28.714 エラー 1549 --- [tp1945397783-20] org.apache.jasper.servlet.JspServlet: PWC6117: ファイル "%2FUsers%2Fnode42%2FDevelopment%2Fmock-security-ui%2Fbuild%2Flibs %2Fmock-security-ui-2.06-SNAPSHOT.war%2FWEB-INF%2Fjsp%2Falivepage.jsp" が見つかりません
ログ エントリの .war ファイルへのパスが正しく、war ファイルのパス (WEB-INF/jsp/alivepage.jsp) が正しい。Jetty を使用しても Tomcat を使用しても、応答は同じです (上記のログは Jetty からのものです)。また、ビュー リゾルバーを使用しないか、上記のように指定するか、プロパティを介してビュー リゾルバーを設定しようとしました。この小さな詳細を除いて、すべてが実際に機能しているように見えるので、私は完全に困惑しています. また、コントローラーの @ResponseBody アノテーション付きメソッドは正常に機能します。
誰かが何か提案があれば、私は確かに入力に感謝します!