将映射从spring上下文传递到webflow jsp

时间:2012-05-04 18:44:12

标签: jsp spring-webflow

我有一张地图,有点像我在春天的上下文文件中定义的那样。

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

我想从像我这样的网络流中的JSP中访问这个

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

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

如果我在普通的java视图控制器中使用它,它的工作正常,但Webflow有一个处理视图状态的XML文件,我不知道如何将变量传递到视图状态之外。

2 个答案:

答案 0 :(得分:0)

这种方法与WebFlow无关,但如果地图是一个全局单例,你可以使用org.springframework.web.context.support.ServletContextAttributeExporter将Spring bean放到“应用程序范围”(a.k.a. ServletContext)上。

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

<bean class="org.springframework.web.context.support.ServletContextAttributeExporter">
    <property name="attributes">
        <map>
            <entry key="myMap" value-ref="myMap"/>
        </map>
    </property>
</bean>

答案 1 :(得分: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等)的更多示例。