我在flow.xml中有不同的view-state
's。所有这些状态都有相同的视图。现在我想设置一个变量,它只包含一个字符串,并在视图文件中调用它来定制内容。
以下是我的文件:
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的值,所以例如"rarch"。
rcmembers.xhtml就是我想调用变量
的那部分代码<p:panel id="panel" header="Memberslist of **Here comes the value of the variable">
您有两个选择:
首先,你可以在流定义级别定义它,并将其直接暴露给视图:
<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());
...
}
希望有帮助
一些用户问我这个问题后,如何设置一个简单的变量与字符串值。因此,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。
希望我能帮到一些人。
为什么不为这个视图状态创建一个子流呢?
这样你就可以为你的变量有一个输入,并在任何地方调用它。不需要有多个相同的视图状态