首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用FreeMarkerViewResolver访问html文件中的freemarker变量

使用FreeMarkerViewResolver访问html文件中的freemarker变量
EN

Stack Overflow用户
提问于 2011-08-19 18:05:13
回答 1查看 3.1K关注 0票数 2

我将我的web应用程序配置为如下链接http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch17s04.html

我的上下文

代码语言:javascript
复制
<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}访问转换范围变量。我的问题是:如果我在我的上下文中定义了FreeMarker变量"foo“,我如何在html中访问它:

代码语言:javascript
复制
<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示例

代码语言:javascript
复制
<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 }时,我得到的表达式foo is undefined。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-22 17:51:09

感谢@ddekany,它工作了,在我的配置中没有任何错误。我之前搞糊涂了。:)。是的,foo只显示为${foo}。

另外,如果我想在应用程序运行期间添加新的变量,我可以使用

代码语言:javascript
复制
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("foo2", "foo2");
freeMarkerConfigurer.getConfiguration().setAllSharedVariables(new SimpleHash(variables,  freeMarkerConfigurer.getConfiguration().getObjectWrapper()));

我可以使用${foo2}进行访问。

再次感谢。现在已经完成了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7120016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档