无法在Thymeleaf / Spring4中使用表达式

时间:2015-01-21 16:22:31

标签: spring spring-mvc thymeleaf

使用Tiles后,我觉得使用Thymeleaf模板,但是,我似乎无法在HTML页面中使用任何表达式。

我尝试使用项目启动器快速启动Spring MVC,它在渲染到jsp时工作正常,但是没有使用带有Thymeleaf的HTML - 显示了HTML页面,所以它显然正在工作在某种程度上,但所有表达式都显示为简单文本而未进行评估。

这是servlet-context.xml的Thymeleaf部分:

<beans:bean id="templateResolver"
class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
    <beans:property name="prefix" value="/WEB-INF/templates/" />
    <beans:property name="suffix" value=".html" />
    <beans:property name="templateMode" value="HTML5" />
</beans:bean>
<beans:bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
    <beans:property name="templateResolver" ref="templateResolver" />
    <beans:property name="additionalDialects">
        <beans:set>
        <beans:bean class="nz.net.ultraq.thymeleaf.LayoutDialect" />
        </beans:set>
    </beans:property>
</beans:bean>
<beans:bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
    <beans:property name="templateEngine" ref="templateEngine" />
</beans:bean>

控制器只是快速启动MVC模板中生成的控制器:

@Controller
public class HomeController {

@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {        
    Date date = new Date();
    DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);

    String formattedDate = dateFormat.format(date);
    model.addAttribute("serverTime", formattedDate );
    return "home";
    }
}

HTML只是通过额外的Thymleaf表达式从jsp复制而来:

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1"/>
<title>Insert title here</title>
</head>
<body>
<p>  (HTML)The time on the server is ${serverTime}. </p>
#{serverTime}

<h1>th:text:="#{serverTime}"</h1>

</body>
</html>

我在这里缺少什么想法?感谢

1 个答案:

答案 0 :(得分:0)

问题与你的html有关,Thymeleaf使用标准方言来定义以th:开头的html属性

你的HTML主体应该是这样的:

<body>
<p>The time on the server is <span th:text="${serverTime}">time</span>.</p>

<h1 th:text="${serverTime}">Time again!</h1>

</body>

我建议您阅读教程“Using Thymeleaf