Spring-Boot не находит страницы JSP в файле WAR
При запуске проекта начальной загрузки (java -jar /path/to/war.war) .jsp файлы не найдены.
Методы, помеченные @ResponseBody, работают нормально. Средство распознавания представлений предлагает правильный путь к страницам JSP, но они не найдены. Этот проект имеет один класс конфигурации и не имеет 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-безопасности щ% 2Fbuild% 2Flibs% 2Fmock-безопасности щ-2,06-SNAPSHOT.war% 2FWEB-INF% 2Fjsp% 2Falivepage.jsp» не найдено
Путь к файлу .war в записи журнала правильный, а путь в файле war (WEB-INF / jsp / alivepage.jsp) правильный. Ответ одинаков как для Jetty, так и для Tomcat (указанный выше журнал был от Jetty). Я также пытался не использовать распознаватель представлений, указав его, как указано выше, или настраивать преобразователь представлений через свойства. Я совершенно сбит с толку, так как на самом деле все выглядит так, как будто оно работает, за исключением одной маленькой детали. И аннотированный метод @ResponseBody в контроллере работает нормально.
Если у кого-то есть предложения, яЯ, безусловно, ценю вклад!