6
<h:selectBooleanCheckbox id="deactivate" title="select to deactivate" />

JSF ページにチェックボックスとボタンがあります。チェックボックスがチェックされている場合にのみボタンを有効にしたい。

私のJavaクラスに手動のJavaScriptやリスナーメソッドを使用せずにこれを行うJSFの方法は何ですか。おそらく次のような式でそれを行う方法があるはずです。

"panel group rendered=#{}" 

有効にレンダリングされた 1 つのボタンと、レンダリングまたは無効にされた 1 つのボタン。

4

2 に答える 2

14

私のJavaクラスでJavaScriptもリスナーメソッドも使わずにこれを行うJSFの方法は何ですか

これは明らかに不可能です。あなたが実際に意味していたのは、「手動で作成された JavaScript はありません」(したがって、JSF によって生成された JavaScript を で使用されるものとして受け入れます<f:ajax>) および「手動で作成されたリスナー メソッドはありません」(したがって、コンポーネント ツリー状態で JSF 独自の魔法を受け入れます)。

その場合、これは次のようにする必要があります。

<h:form>
    <h:selectBooleanCheckbox binding="#{checkbox}">
        <f:ajax render="button" />
    </h:selectBooleanCheckbox>
    <h:commandButton id="button" value="submit" 
        action="#{bean.submit}" 
        disabled="#{not checkbox.value}" />
</h:form>

それで全部です。追加の JS コード、JSF Bean プロパティ、またはリスナー メソッドは必要ありません。ただのsubmit()アクションメソッド。

この例のbinding属性は、UIComponent参照を<h:selectBooleanCheckbox>Facelet スコープ内の変数 name の下に置きますcheckbox。EL 式は、コンポーネント#{checkbox.value}の属性を返します。これは、コンポーネントがすでに であり、コマンド コンポーネントの属性で使用する準備ができているvalue場合を表します。UISelectBooleanbooleandisabled

注:disabled="#{not checkbox.value}"古い Eclipse バージョンの行で誤った EL エラーに直面している場合は、次のように構成する必要があります: [ウィンドウ] > [設定] > [Web] > [JavaServer Faces ツール] > [検証] > [型強制の問題] > [単項演算ブール値]強制の問題は、 Errorの代わりにWarningまたはIgnoreに設定します。これは、Eclipse Mars 以降は必要ありません。

以下も参照してください。

于 2013-06-18T13:31:00.753 に答える