0

我有一张地图,有点像在我的 spring 上下文文件中定义的。

<util:map id="myMap">
  <entry key="key1" value="myValue"/>
</util:map>

我想从我的 JSP 在这样的 webflow 中访问它

<c:forEach var="item" items="${myMap}">
 <div>
  <c:out value="${item.key}"/>
 <div>
</c:forEach>

我怎么做?我在 spring 上下文中定义地图,但它没有在 webflow 中被拾取。

如果我将它放在常规的 java 视图控制器中,它工作得很好,但是 Webflow 有一个处理视图状态的 XML 文件,我不知道如何将变量传递到视图状态之外。

4

2 回答 2

0

这种方法与 WebFlow 无关,但如果地图打算成为全局单例,您可以使用org.springframework.web.context.support.ServletContextAttributeExporter将 Spring bean 放到“Application Scope”(又名 ServletContext)上。

如果您这样做,任何 JSP 都可以像您发布的那样通过 EL 访问它。

<bean class="org.springframework.web.context.support.ServletContextAttributeExporter">
    <property name="attributes">
        <map>
            <entry key="myMap" value-ref="myMap"/>
        </map>
    </property>
</bean>
于 2012-06-01T18:17:41.840 回答
0

在您希望访问此地图的视图状态下,您可以设置一个范围变量以在页面中访问。请求范围可能在这里最有意义;它仅在此特定查看请求期间的范围内。您设置的将是您要迭代的该映射的 bean id。(或者,它也可以是 bean 上的方法的输出。)

<view-state id="someState" view="viewName">
    <on-render>
        <set name="requestScope.myMap" value="myMap"/>
    </on-render>
</view-state>

我建议查看 spring web flow 文档以获取更多关于各种范围(flash、flow 等)和不同事件(on-render、on-entry 等)的示例

于 2012-06-12T19:58:53.353 回答