我正在使用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,但复选框保持不变。
答案 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>
我希望这对你有用。