我有一张地图,有点像我在春天的上下文文件中定义的那样。
<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文件,我不知道如何将变量传递到视图状态之外。
答案 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等)的更多示例。