【发布时间】:2011-10-30 12:08:09
【问题描述】:
我像这个链接http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch17s04.html一样配置了我的网络应用程序
我的背景
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/freemarker/" />
<property name="freemarkerSettings">
<props>
<prop key="tag_syntax">square_bracket</prop>
<prop key="auto_import">spring.ftl as spring, echannels.ftl as echannels
</prop>
<prop key="template_update_delay">2147483647</prop>
</props>
</property>
</bean>
<bean id="htmlViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="contentType" value="text/html;charset=ISO-8859-1" />
<property name="cache" value="${viewResolver.html.cache}" />
<property name="prefix" value="html/" />
<property name="suffix" value=".html" />
</bean>
我使用 spring-webflow 链接我所有的页面 html。 在我的页面 html 中,我可以使用 ${name_variable} 访问转换范围变量。 我的问题是:如果我在我的上下文中定义它,我怎么能在我的 html 中访问 FreeMarker 变量“foo”:
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/freemarker/" />
<property name="freemarkerVariables">
<map>
<entry key="foo" value="foo" />
</map>
</property>
</bean>
我的 HTML 示例
<html>
<head>
<title>Welcome</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body>
<h1>Welcome ${issuerId}</h1>
<form action="?execution=${flowExecutionKey}" method="post" name="defineFeeForm">
<input type="submit" name="_eventId_next" value="Next" /> <br/>
</form>
</body>
我可以访问 ${issuerId} 因为我有 request.setConversationScope("issuerId", "1234") 但我也想访问 foo freemarker 变量但是当我使用 ${foo} 时,我得到 Expression foo is undefined。 有什么想法吗?
【问题讨论】:
-
我不知道 Spring MVC,所以我只是评论...根据 Spring JavaDoc
freemarkerVariables调用设置freemarker.template.Configuration.setAllSharedVariables。如果这是真的,foo应该简单地显示为 ${foo}。因此,要么您的视图不使用您认为它使用的 freemarker.Configuration 对象,要么您碰巧在数据模型(甚至更高层)中有另一个为空的foo变量。