2016-08-25 4 views
0

У меня есть приложение Spring MVC с разрешением Thymeleaf view. Вот мой конфигурационный класс:Решения Thymeleaf и JSP в одном приложении Spring MVC

public class WebConfig extends WebMvcConfigurerAdapter { 

    @Bean 
    public SpringResourceTemplateResolver springResourceTemplateResolver() { 
     return new SpringResourceTemplateResolver(); 
    } 

    @Bean 
    public ViewResolver viewResolver() { 
     ThymeleafViewResolver resolver = new ThymeleafViewResolver(); 
     resolver.setTemplateEngine(templateEngine()); 
     resolver.setCharacterEncoding("UTF-8"); 
     return resolver; 
    } 

    @Bean 
    public TemplateEngine templateEngine() { 
     SpringTemplateEngine engine = new SpringTemplateEngine(); 
     engine.setEnableSpringELCompiler(true); 
     engine.setTemplateResolver(templateResolver()); 
     return engine; 
    } 

    private ITemplateResolver templateResolver() { 
     springResourceTemplateResolver().setPrefix("/WEB-INF/templates/"); 
     springResourceTemplateResolver().setTemplateMode(TemplateMode.HTML); 
     return springResourceTemplateResolver(); 
    } 

} 

Теперь мне нужно добавить jsp resolver в то же приложение. Я добавляю InternalResourceViewResolver боб, но он не работает, как ожидалось:

@Bean 
    public InternalResourceViewResolver jspViewResolver() { 
     InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
     resolver.setPrefix("/WEB-INF/views/"); 
     resolver.setSuffix(".jsp"); 
     return resolver; 
    } 

Вместо того, чтобы test_jsp страницы, когда я иду/тест/JSP я получаю сообщение об ошибке:

@RequestMapping(value = "/test/leaf", method = RequestMethod.GET) 
    public String mainPage() { 
     return "test_html.html"; 
    } 

    @RequestMapping(value = "/test/jsp", method = RequestMethod.GET) 
    public String mainPage2() { 
     return "test_jsp"; 
    } 

Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "ServletContext resource [/WEB-INF/templates/test_jsp]")

Кто-нибудь знает, как добавить jsp view resolver, когда ThymeLeaf уже на месте? Мне нужна Весна, чтобы сначала искать Тимелеафа, а когда страница не найдена, он ищет jsp. Спасибо

ответ

1

Установите order на ThymeleafViewResolver на нижнее целое число, отличное от других order объектов на других разрешениях. Нуль имеет смысл для вашего дела.

Для вашего контроллера вы хотите вернуть только имя страницы и оставить расширение (.html).

Наконец, опубликуйте полный след, когда вы отправляете сообщения об ошибках в SO. В его нынешнем виде также может возникнуть проблема с вашим JSP, но читатель здесь не может легко сказать.

Смежные вопросы