2014-08-29 74 views
1

我在xhtml頁面中有一個bean類和一個selectBooleanCheckbox。我希望點擊該框的值應該在後臺bean中設置。在selectbooleancheckbox上設置bean值

這裏是代碼:

<h:selectBooleanCheckbox id="provisioningTargetCollector" 
          value="#{targetSource.provisioningTargetCollector}"> 
          </h:selectBooleanCheckbox> 

Bean類:

public boolean isProvisioningTargetCollector() { 
    return _provisioningTargetCollector; 
} 

public void setProvisioningTargetCollector(boolean provisioningTargetCollector) { 
    _provisioningTargetCollector = provisioningTargetCollector; 
} 

但getter和setter被稱爲只在頁面加載。如何在點擊複選框的情況下設置bean方法中的值。

回答

4

只有在提交按鈕被按下時纔會填寫表單數據的模型。如果你想對服務器進行部分更新,你需要發送一個AJAX請求。幸運的是,從JSF 2開始,通過引入<f:ajax>標籤,它非常簡單。它爲實現ClientBehaviorHolder接口的UIComponent實例添加了ajax功能,即能夠觸發ajax請求的組件。

要進行局部更新,需要在<f:ajax>標記的execute屬性中指定其客戶端ID。由於默認值execute屬性的計算結果爲@this,或標籤附加到的組件。只要您想更新只給定<h:selectBooleanCheckbox>你可以做到這一點作爲築巢純<f:ajax />標籤那麼簡單,那麼您複選框,即:

<h:selectBooleanCheckbox id="provisioningTargetCollector" value="#{targetSource.provisioningTargetCollector}"> 
    <f:ajax /> 
</h:selectBooleanCheckbox> 
+0

其工作。謝謝。現在我想根據這個複選框的值顯示/隱藏一個combox盒子。你可以在這裏檢查問題http://stackoverflow.com/questions/25551303/jsf-ajax-render-not-working-on-selectbooleancheckbox。對不起,我是JSF的新手。 – 2014-08-29 13:35:49

+0

不客氣!使用''標籤的'render'屬性,並遵循待評估組件的'rendered'屬性的評估結果。這將引導您朝着正確的方向發展,並且您將自行解決問題。 – skuntsel 2014-08-29 13:40:28

+0

謝謝!我只是這樣做的。但我無法找出爲什麼它不起作用。我已經檢查了很多次。 – 2014-08-29 14:02:44