2013-12-09 26 views
3

我創建了基本上是複選框的自定義控件。我希望複選框讀取我傳入的dataSource的值 - 這將是一個託管bean。我可以從複選框字段中讀取bean,但當我更改複選框時,我沒有看到任何事情發生。它看起來不像bean中的setter被調用。XPages Managed Bean setter未啓用複選框更改

我Bean的關鍵片段是:

private boolean categoriesOn; 
... 

public boolean isCategoriesOn() { 
    System.out.println("Getting On Value"); 
    return categoriesOn; 
} 
public void setCategoriesOn(boolean newValue) { 
    System.out.println("Setting On : " + newValue); 
    this.categoriesOn = newValue; 
} 

上XPage上的控制是這樣的:

<xp:checkBox id="flipSwitch" 
        styleClass="onoffswitch-checkbox" 
        value="${compositeData.dataSource}" 
        checkedValue="#{javascript:true}" 
        uncheckedValue="#{javascript:false}"> 
        <xp:eventHandler event="onchange" submit="true" 
         refreshMode="complete"> 
        </xp:eventHandler> 
       </xp:checkBox> 

我的豆傳遞到與自定義屬性自定義控制:

<xc:crtl_toggleSwitch 
       dataSource="#{exhibitorInfo.categoriesOn}" 
       refreshID="computedField6"> 
      </xc:crtl_toggleSwitch> 

dataSource設置爲使用Methodbinding。

我試過部分和全部刷新。我只是不確定我需要做什麼才能將更改後的值返回到bean中。

感謝您的任何建議。

+0

這有幫助嗎? http://stackoverflow.com/questions/15546635/binding-a-checkbox-control-to-a-bean-in-xpages –

+0

你的問題的標題說組合框,但內容說複選框... –

+0

嘗試把代碼在吸氣劑不是裝配員(或除了) –

回答

4

正如Peter在Per關於問題的回答中所指出的,複選框不能直接綁定到布爾值(這是公然荒謬的)。添加這些方法:

public String getCategoriesOnAsString(){ 
return isCategoriesOn() ? "1" : "0"; 
} 

public void setCategoriesOnAsString(String value){ 
setCategoriesOn("1".equals(value)); 
} 

那麼你的複選框綁定到#{exhibitorInfo.categoriesOnAsString},並設置checkedValueuncheckedValue分別"1""0"

+0

是的 - 「不能綁定到布爾」是不幸的 – stwissel

+0

這最終運作良好。謝謝蒂姆! –