知识点
使用变量表达式 ${...} 从上下文中获取某个变量的值。
现在让我们为我们的杂货店主页增加一些内容。例如,我们可能想在我们的欢迎提示语下面显示日期,像这样:
Welcome to our fantastic grocery store! Today is: 12 july 2010
首先,我们必须修改我们的控制器,以便将该日期作为一个上下文变量加入到上下文。
控制器代码如下:
@Override
public void process(final IWebExchange webExchange, final ITemplateEngine templateEngine,
final Writer writer) throws Exception {
WebContext ctx = new WebContext(webExchange, webExchange.getLocale());
// 给上下文添加一个日期变量 today
ctx.setVariable("today", Calendar.getInstance());
templateEngine.process("home", ctx, writer);
}我们已经在上下文中添加了一个名为 “today” 的字符串变量,现在我们可以在模板中显示它。例如:
<body>
<!-- #{} 国际化表达式 -->
<p th:utext="#{home.welcome}">Welcome to our grocery store!</p>
<!-- ${} 变量表达式 -->
<p>Today is: <span th:text="${today}">13 February 2011</span></p>
</body>正如你所看到的,我们仍然使用 th:text 属性来完成这项工作,但这次的语法有点不同,我们使用的不是 #{...} 表达式,而是 ${...} 表达式。这是一个变量表达式,它包含了一种叫做 OGNL(Object-Graph Navigation Language)的语言表达式,将在我们之前谈到的上下文变量上执行。
${today} 表达式只是意味着 "获取名为 today 的变量",但这些表达式可能更复杂(比如 ${user.name} 表示 "获取名为 user 的变量,并调用其 getName() 方法")。