2011-02-01 15 views
3

通常私は以下のようにします。ボタンをクリックすると遷移が実行されます。h:selectOneMenuの値の変更をどのように実行するのですか?

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


編集:...アヤックスとのWebflowイベントが、どのようにそのイベントを使用する方法を準備します 私はFにリスナーを登録することについて考え?誰か助けて?

<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... ??? 
    } 
} 

答えて

4

が、私は最近、同様の問題があったが、同様のリスナースタイルでprimefaces/RichFacesのイベントを処理します。ここでは例です:あなたは:)

を望む方の流れイベントに移行する必要があり
public void changeListener(AjaxBehaviorEvent event) { 
    RequestContext requestContext = RequestContextHolder.getRequestContext(); 
    RequestControlContext rec = (RequestControlContext) requestContext; 
    //place variables you need in next flow phase here; flash,application,session scope 
    rec.getFlashScope().put("someVarIneedInNextFlow", varName); 
    rec.handleEvent(new Event(this, "flow transition name here, i.e. next-stage")); 
    return; 
} 

関連する問題