知识点
使用变量表达式 ${...} 从上下文中获取某个变量的值。
现在让我们为我们的杂货店主页增加一些内容。例如,我们可能想在我们的欢迎提示语下面显示日期,像这样:
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() 方法")。