我想在我的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)


谁能告诉我该怎么做?

最佳答案

flowScope是MutableAttributeMap

您无法实现它。这就是使用c:forEach不能正常工作的原因。

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

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

10-08 01:40