Web流程中的简单变量

时间:2013-03-07 09:12:55

标签: java spring jsf spring-webflow

我在 flow.xml 中有不同的view-state。所有这些州都有相同的观点。现在我想设置一个变量,它只包含一个String,并在视图文件中调用它来自定义内容 这是我的档案:
flow.xml 示例两个视图状态

<view-state id="rcpm" view="rc/rcmembers.xhtml">
    <on-entry>
        <evaluate expression="RCHtmlCache.getCommunityList('rcpm')"
            result="flowScope.members" />
    </on-entry>
</view-state>

<view-state id="rcarch" view="rc/rcmembers.xhtml">
   <on-entry>
        <evaluate expression="RCHtmlCache.getCommunityList('rcarch')"
            result="flowScope.members" />
    </on-entry>
</view-state>

在这个文件中我需要一个带有视图状态ID值的变量,例如“rcarch”。

rcmembers.xhtml 只是我要调用变量的代码部分

<p:panel id="panel" header="Memberslist of **Here comes the value of the variable">

希望你理解我的问题......

3 个答案:

答案 0 :(得分:8)

您有两种选择:

首先,您可以在流定义级别定义它并直接将其公开给视图:

<on-entry>
   <set name="flowScope.myView" value="flowRequestContext.currentState.id"/>
</on-entry>

或者您可以将流上下文传递给控制器​​,然后将其暴露在那里:

<evaluate expression="RCHtmlCache.getCommunityList(flowRequestContext)" result="flowScope.members"/>

在控制器上:

public String getCommunityList(RequestContext context) {
   context.getFlowScope().put("myView", context.getCurrentState().getId());
   ...
}

希望有所帮助

答案 1 :(得分:7)

有些用户在这个问题后问我,如何设置一个带String值的简单变量。所以 xpadro 的答案帮助了我很多,但有些用户点击这个问题就知道如何用字符串值设置一个简单的变量。所以我想在这里发布答案:
使用 xpadro 代码,只需将值替换为您希望用'包围的字符串:

<set name="viewScope.variable" value="'String you want'" />

xpadro 所述,set标记应保留在on-entry ...内 要了解您应该使用哪个Scope,请查看http://static.springsource.org/spring-webflow/docs/2.0.x/reference/html/ch03s05.html

希望我能帮助那些人:)

答案 2 :(得分:2)

为什么不为此视图状态创建子流?

这样你就可以为你变量输入并从任何地方调用它。无需具有多个相同的视图状态。