【问题标题】:Passing a map from spring context into webflow jsp将地图从spring上下文传递到webflow jsp
【发布时间】:2012-06-13 03:58:53
【问题描述】:

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

<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 文件,我不知道如何将变量传递到视图状态之外。

【问题讨论】:

    标签: jsp spring-webflow


    【解决方案1】:

    这种方法与 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>
    

    【讨论】:

      【解决方案2】:

      在您希望访问此地图的视图状态下,您可以设置一个作用域变量以在页面中访问。请求范围可能在这里最有意义;它仅在此特定查看请求期间的范围内。您设置的 value 将是您要迭代的那个映射的 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 等)的示例

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 2015-03-04
        • 1970-01-01
        相关资源
        最近更新 更多