通常、私は以下のようなことをします。ボタンをクリックすると、トランジションが実行されます。
<!-- view -->
<h:form>
<h:commandButton action="doit">
<f:ajax render="@form"/>
</h:commandButton>
</h:form>
<!-- flow -->
<transition on="doit">...</transition>
(たとえば)h:selectOneMenuの値の変更時にトランジションを起動する方法は?
<h:form>
<h:selectOneMenu value="#{selected}">
<f:selectItems value="#{items}/>
<f:ajax event="valueChange" render="@form" />
</h:selectOneMenu>
</h:form>
編集:
リスナーをf:ajaxに登録し、webflowイベントを準備することを考えましたが、そのイベントの使用方法は...?誰か助けますか?
<h:form>
<h:selectOneMenu value="#{selected}">
<f:selectItems value="#{items}/>
<f:ajax event="valueChange" render="@form" listener="#{bean.changeListener}" />
</h:selectOneMenu>
</h:form>
java:
import javax.faces.event.AjaxBehaviorEvent;
import org.springframework.webflow.execution.Event;
public class Bean {
public void changeListener(AjaxBehaviorEvent event) {
// prepare webflow event
Event e = new Event(event.getSource(), "doit");
// propagate this event... ???
}
}