2012-07-17 63 views
0

我createing使用JSF 2.0頁:方法沒有得到所謂的onclick事件

<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,但複選框保持不變。

回答

1

onclick屬性用於客戶端(javascript)方法,並且不會更改服務器端的任何內容。

如果你想改變一個服務器端的價值,你需要的value屬性:

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

請注意,我改變了你的setMyCheckboxValue()myCheckboxValue因爲setter方法自動由JSF檢測(如果你正確地定義你的變量foo與獲取者getFoo()和設置者setFoo(...)

0

onclick用於客戶端JavaScript調用。 我想你想調用一個函數在服務器端,當一個複選框被點擊。

下面是代碼:

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

我希望這會爲你工作。

+0

當我使用ajax時,問題是如果複選框被選中時加載然後它仍然檢查,即使點擊後... – 2012-07-19 16:32:36

相關問題