【问题标题】:How to pass values between pages using thymeleaf in a spring MVC web application如何在 Spring MVC Web 应用程序中使用 thymeleaf 在页面之间传递值
【发布时间】:2014-09-02 21:32:52
【问题描述】:

我有一个在控制器类中创建的字符串变量,我想使用它在 jsp 页面中打印它

${time}

如果我不使用 thymeleaf 视图解析器,我的代码可以工作,但如果我使用它,它就不起作用。

这是我的控制器类

@Controller
public class HomeController {

@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {

     String thetime = "the time";
     model.addAttribute("time", thetime );

    return "home.jsp";
}

还有我的 .jsp 页面

 <html>
   <head>
     <title>Home</title>
   </head>
 <body>
 <h1>
   Hello world!  
 </h1>

 <P>  The time on the server is ${time}. </P>
 </body>
</html>

我的百里香解析器配置:

@Bean 
 public ServletContextTemplateResolver templateResolver() {
        ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode("HTML5");
        resolver.setOrder(1);
    resolver.setCacheable(false);
    return resolver;
    }
    @Bean 
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine engine = new SpringTemplateEngine();
        engine.setTemplateResolver(templateResolver());
        engine.setMessageSource(messageSource());

        return engine;
    }

    @Bean 
    public ThymeleafViewResolver thymeleafViewResolver() {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        String[] vistas = {"*.html", "*.jsp"};
        resolver.setTemplateEngine(templateEngine());
        resolver.setOrder(1);
        resolver.setViewNames(vistas);
        resolver.setCache(false);
        return resolver;
    }

    @Bean
    public SpringResourceTemplateResolver thymeleafSpringResource() {
        SpringResourceTemplateResolver vista = new SpringResourceTemplateResolver();
        vista.setTemplateMode("HTML5");
        return vista;
    }

百里香叶是否有特殊的符号?

【问题讨论】:

  • 大概,您没有使用带有百里香叶的 JSP。你是什​​么意思不工作?清楚。你在做什么?你期望会发生什么?实际发生了什么?

标签: java spring jsp spring-mvc thymeleaf


【解决方案1】:

您已将视图解析器设置为 Thymeleaf,但您尝试渲染 JSP,这就是它不起作用的原因。

如果您希望将该文件转换为 Thymeleaf 格式,它需要看起来像这样(或近似)并且扩展名必须是 .html 而不是 .jsp:

<html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:th="http://www.thymeleaf.org">
   <head>
     <title>Home</title>
   </head>
 <body>
 <h1>
   Hello world!  
 </h1>

 <P>  The time on the server is <div th:text=#{time}>TIME_PLACEHOLDER</div> </P>
 </body>
</html>

【讨论】:

    【解决方案2】:

    Aesir's answer 工作,但没有必要将我的 .jsp 页面更改为 .html 页面。我只是把这个

    <div th:text="${time}">TIME_PLACEHOLDER</div>
    

    而不仅仅是 ${time},它可以在没有建议的 HTML 标头的情况下工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多