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()myCheckboxValue因为 jsf 自动检测到 setter 方法(如果您foo使用 gettergetFoo()和 setter正确定义了变量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 回答