2011-11-10 7 views
0

イベントが実行されるときに、どのようにjsfコンポーネントの値を取得することができますか。たとえば、このコンポーネント考える:私が欲しいものイベント選択時にRichfacesを表示する

<rich:select id="selectEmpresa" 
    value="#{macroprocesoController.empresaSeleccionada}" 
    converter="genericConverter" enableManualInput="true" onchange="if(!#{rich:component('selectEmpresa')}.getValue()) return false;"> 
    <f:selectItems value="#{selectItemsController.empresaItems}" /> 
    <a4j:ajax execute="@this" render="macroProcesosTable" event="selectitem" listener="#{macroprocesoController.empresaSelectedListener}"></a4j:ajax> 
    <a4j:ajax execute="@this" render="macroProcesosTable" event="change" listener="#{macroprocesoController.empresaSelectedListener}"></a4j:ajax> 
</rich:select> 

すると、コンポーネントがselectitemイベントを実行し、したがって値を設定する際に、changeイベントがバイパスされるように、条件付きで、changeイベントのa4j:ajaxを実行することです。しかし、これは動作していません、私は必要なことをするための提案や方法?

答えて

1
onchange="if(!#{rich:component('selectEmpresa')}.getValue()) return false;" 

この式は、(それを自分で見るために生成されたHTMLソースを確認してください)ビューがレンダリングされるときに評価され、ないときDOMイベントが実行されます。代わりにJavaScriptを使用して現在の値を取得する必要があります。以下は、実行する必要があります。

onchange="if (!this.value) return false;" 

か、単に

onchange="return !!value;" 
関連する問題