Spring Webflow和primefaces ActionListners

时间:2013-01-16 17:07:23

标签: primefaces spring-webflow

如何从Primefaces actionlistner调用Spring Webflow过渡?

我有一个Primefaces组件SelectOneMenu。每当Component的值发生变化时,我想调用Spring Webflow中的转换来在outPutText中显示SelectItem上的描述。

我是Spring Webflow和Primefaces的新手。

如果以下内容不正确,请与我们联系。

JSF代码

<h:outputText value="Script " style="font-weight: bold" />
    <p:selectOneMenu value="#{selectedDN.cdrScript}" >
      <p:ajax event="change" listener="scriptChange" update="scriptDesc" />
      <f:selectItems value="#{sctiptOptions}" />
    </p:selectOneMenu>
<h:outputText value="#{scriptDesc}" id="scriptDesc" />

视图的网络流配置

<view-state id="Edit">
<on-entry>
<evaluate expression="scriptService.getOptions()"
              result="flowScope.sctiptOptions"/>
  <set name="flowScope.scriptDesc" value="selectedDN.cdrScript.scriptDesc"/>
    </on-entry>
<transition on="scriptChange">
  <set name="flowScope.scriptDesc"
       value="flowScope.selectedDN.cdrScript.scriptName"/>
  <render fragments="form:scriptDesc" />
</transition>

<transition on="Update" to="Edit">
</transition>

<transition on="Cancel" to="View">
</transition>
</view-state>

1 个答案:

答案 0 :(得分:0)

您不需要SWF转换或侦听器。以下内容将起作用:

<h:outputText value="Script " style="font-weight: bold" />
    <p:selectOneMenu value="#{selectedDN.cdrScript}" >
      <p:ajax event="change" update="scriptDesc" />
      <f:selectItems value="#{scriptService.getOptions()}" var="script" itemLabel="#{script.scriptName}" itemValue="#{script.id}"/>
    </p:selectOneMenu>
<h:outputText value="#{selectedDN.cdrScript.scriptName}" id="scriptDesc" />

并添加&#39; selectedDN&#39;变量定义(如果还没有):

<view-state id="Edit">
<on-entry>
  <set name="flowScope.selectedDN" value="scriptService.getCurrentSelectedDN()"/>
</on-entry>

请注意添加itemLabel和itemValue属性。您可能还需要在selectOneMenu上指定转换器。

使用PF部分渲染,SWF无法很好地发挥出色。将以下内容添加到标记:

下的MVC servlet配置中
        <webflow:flow-execution-attributes>
            <webflow:redirect-in-same-state value="false"/>
        </webflow:flow-execution-attributes>