如何在JSP中显示Spring Webflow的“flowScope”的内容?

时间:2013-08-20 15:29:03

标签: java jsp spring-webflow

我想在我的JSP页面上列出各种webflow上下文范围(viewScope,flowScope等)中的所有内容以进行调试(第一个webflow应用程序,尝试让它工作。)但我似乎无法获得正确的语法。谁能告诉我怎么做?我在我的flow.xml中有这个:

<view-state id="createAccount" model="account">
    <on-render>
        <evaluate expression="flowService.createAccount()" result="flowScope.account" />
    </on-render>
    <transition on="next" to="applicationInfo" />
</view-state>

我在JSP页面中有这个:

<c:forEach items="${flowScope}" var="thisFlowScope" varStatus="thisFlowScopeStatus">
    <label>${thisFlowScope.key}</label>
    <span>${thisFlowScope.value}</span>
</c:forEach>

我希望看到的是“帐户”属性/变量以及flowScope中的其他内容。相反,我一无所获。我尝试了各种排列,例如“flowRequestContext”而不是“flowScope”。使用“flowRequestContext”,我得到:

javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt;
    org.apache.taglibs.standard.tag.common.core.ForEachSupport.toForEachIterator(ForEachSupport.java:255)
    org.apache.taglibs.standard.tag.common.core.ForEachSupport.supportedTypeForEachIterator(ForEachSupport.java:219)
    org.apache.taglibs.standard.tag.common.core.ForEachSupport.prepare(ForEachSupport.java:137)
    javax.servlet.jsp.jstl.core.LoopTagSupport.doStartTag(LoopTagSupport.java:227)

谁能告诉我怎么做?

2 个答案:

答案 0 :(得分:3)

flowScope是MutableAttributeMap

你不能透过它。这就是使用c:forEach无效的原因。

然而: 您可以使用${flowRequestContext.flowScope}打印整个地图,但这看起来并不漂亮。

有一个名为asMap的函数继承自org.springframework.binding.collection.MapAdaptable,它将其转换为java.util.Map(当然可以迭代)

答案 1 :(得分:0)

我根据回应Philipp Sander和“user1071914”添加我的示例:

flow.xml:

<view-state id="display" view="/WEB-INF/jsp/infoUser.jsp" model="dtoUser">
   <on-entry>
      <evaluate expression="flowRequestContext.flowScope.asMap()" result="requestScope.flowAsMap" />
   <on-entry>
   <transition on="next" to="checkUserAction" />
</view-state>

<action-state id="checkUserAction">
  ...
</action-state>

查看JSP:

<c:out value="${requestScope.flowAsMap['myvarflowScope']}" />