При запуске проекта загрузки Spring (java -jar /path/to/war.war) файлы .jsp не найдены.Spring-Boot не находит страницы JSP в файле WAR
Методы, аннотированные с помощью @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")
}
}
Error Log
2013-11-25 09: 08: 28,714 ОШИБКА 1549 - - [tp19453977 83-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 в записи журнала правильно, и путь в войне файла (WEB-INF/JSP/alivepage.jsp) является правильным. Ответ тот же, будь то Jetty или Tomcat (приведенный выше журнал был из Jetty). Я также попытался не использовать распознаватель вида, указав один из них, как указано выше, или установил разрешение представления через свойства. Я полностью смущен, потому что все выглядит так, как будто работает, за исключением этой маленькой детали. И аннотированный метод @ResponseBody в контроллере отлично работает.
Если у кого-то есть предложения, я, безусловно, ценю вход!
Пробуйте добыть войну и запустить программу оттуда. –
Это справедливый вопрос. Подробности для последующего, но результат дает: '2013-11-25 11: 35: 37.967 WARN 4924 --- [nio-8080-exec-1] osweb.servlet.PageNotFound: сопоставления не найдено для HTTP-запроса с URI [ /WEB-INF/jsp/alivepage.jsp] в DispatcherServlet с именем 'dispatcherServlet'' – node42
Командная строка (сокращенно) была 'java -cp.: WEB-INF/lib/validation-api-1.0.0.GA.jar : WEB-INF/classes org/springframework/boot/loader/WarLauncher', где было намного больше записей WEB-INF/lib. – node42