首页 文章

Thymeleaf和JSP解析器在一个Spring MVC应用程序中

提问于
浏览
0

我有一个带有Thymeleaf视图解析器的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解析器 . 我正在添加InternalResourceViewResolver bean,但它不能按预期工作:

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

当我去/ test / jsp时,我得到一个错误,而不是获取test_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";
    }

请求处理失败;嵌套异常是org.thymeleaf.exceptions.TemplateInputException:模板解析期间发生错误(模板:“ServletContext资源[/ WEB-INF / templates / test_jsp]”)

当ThymeLeaf已经到位时,有谁知道如何添加jsp视图解析器?我需要Spring首先寻找Thymeleaf,当找不到页面时,他会搜索jsp . 谢谢

1 回答

  • 1

    ThymeleafViewResolver 上的 order 属性设置为比其他解析器上的其他 order 属性更低的整数 . 零对你的情况有意义 .

    对于您的控制器,您只需要返回页面名称并省略扩展名(.html) .

    最后,当您向SO发布错误消息时发布完整跟踪 . 就目前而言,您的JSP也可能存在问题,但这里的读者无法轻易说出来 .

相关问题