没有调用onclick事件的方法

时间:2012-07-17 09:46:56

标签: html jsf-2 checkbox onclick

我正在使用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,但复选框保持不变。

2 个答案:

答案 0 :(得分:1)

onclick属性用于客户端(javascript)方法,不会更改服务器端的任何内容。

如果要更改服务器端值,则需要value属性:

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

请注意,我已将您的setMyCheckboxValue()更改为myCheckboxValue,因为jsf会自动检测到setter方法(如果您使用getter foo正确定义变量getFoo()并且setter setFoo(...)

答案 1 :(得分:0)

onclick用于客户端javascript调用。 我想你想在服务器端调用一个函数,当点击一个复选框时。

以下是代码:

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

我希望这对你有用。