0

JSF 2.0 を使用してページを作成しています。

<h:selectBooleanCheckbox id="checkbox1" title="Published" 
                         onclick="#{StageGate.setMyCheckboxValue()}" />

setMyCheckboxValue()チェックボックスがクリックされるたびに呼び出されることを期待していました。ただし、setMyCheckboxValue()ページが読み込まれると一度呼び出されます。

私が書いたら

<h:selectBooleanCheckbox id="checkbox1" title="Published" 
onclick="#{StageGate.setMyCheckboxValue()}; alert(document.getElementById('checkbox1').checked);" />

クリックするたびにアラートが表示されます。

私の質問は次のとおりです。アラートを受け取っているときにsetMyCheckboxValue()、各 onclick イベントで呼び出されないのはなぜですか?

注: AJAX も試しましたが、チェックボックスは一定のままです。

4

2 に答える 2

1

このonclick属性はクライアント側 (javascript) メソッド用であり、サーバー側では何も変更されません。

valueサーバー側の値を変更する場合は、次の属性が必要です。

<h:selectBooleanCheckbox value="#{StageGate.myCheckboxValue}" .../>

setMyCheckboxValue()セッターメソッドはjsfによって自動的に検出されるため、に変更したことに注意してください(ゲッターとセッターでmyCheckboxValue変数を正しく定義した場合)foogetFoo()setFoo(...)

于 2012-07-17T11:12:01.487 に答える
0

onclickクライアント側の JavaScript 呼び出しに使用されます。チェックボックスがクリックされたときに、サーバー側で関数を呼び出したいと思います。

コードは次のとおりです。

<h:selectBooleanCheckbox id="checkbox1" title="Published"
                         value="#{StageGate.myCheckBox}" >
    <f:ajax event="change" execute="@this"
            action="#{StageGate.setMyCheckboxValue()}" />
</h:selectBooleanCheckbox>

これがうまくいくことを願っています。

于 2012-07-17T12:25:16.793 に答える