1

Primefaces アクションリストナーから 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" />

ビューの Web フロー構成

<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>
4

1 に答える 1

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" />

'selectedDN' 変数定義がまだ存在しない場合は追加します。

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

itemLabel および itemValue 属性が追加されていることに注意してください。selectOneMenu で指定されたコンバーターも必要になる可能性があります。

SWF は、PF の部分レンダリングをそのまま使用するとうまく再生されません。タグの下の MVC サーブレット構成に次を追加します。

        <webflow:flow-execution-attributes>
            <webflow:redirect-in-same-state value="false"/>
        </webflow:flow-execution-attributes>
于 2013-01-16T19:27:03.727 に答える