2015-01-05 117 views
2

Domino 8.5.3 FP5,Designer 9.0.1。如何使複選框可編輯

我有一個空的xpage只包含下面的複選框。我無法使其可編輯。它顯示正確的值,但顯示爲禁用。

 <xp:checkBox text="Label" id="checkBox1" uncheckedValue="true" 
     checkedValue="false" 
     value="#{javascript:jBeanConfigSupport.validationEnabledTxt}"> 
     </xp:checkBox> 

如果我刪除綁定到Java bean,所有運行良好。這是Java bean代碼(部分)

private boolean isValidationEnabled=true; 

    public String getValidationEnabledTxt() { 
     return String.valueOf(isValidationEnabled); 
    } 

    public void setValidationEnabledTxt(String onOff) { 
     isValidationEnabled=Boolean.parseBoolean(onOff); 
    } 
    public void setValidationEnabledTxt(boolean onOff) { 
     isValidationEnabled=onOff; 
    } 

我在哪裏錯了?

回答

6

您使用SSJS進行綁定,因此不是綁定到您的bean的validationEnabledTxt屬性,而是使用jBeanConfigSupport.validationEnabledTxt的結果來確定它應該綁定的內容。 value="#{jBeanConfigSupport.validationEnabledTxt}"應該工作映射到getter和setter。

+0

謝謝保羅。它用作表達式語言。非常感謝你,並感謝@steve澄清。沒有辦法使用SSJS? –

+1

如果要綁定到bean的屬性,則需要使用表達式語言。 SSJS只是一個字符串,在運行時或頁面加載時計算以返回值。你不想綁定到SSJS的結果,所以SSJS是錯誤的方法。如果它是一個dominoDocument而不是一個bean,SSJS將綁定到一個字段的值而不是一個字段本身。這與試圖在CSJS中運行SSJS類似 - SSJS由服務器計算並由CSJS使用,SSJS本身不在「CSJS內」使用。 –

1

弗朗西斯

你需要有一個工作的setter方法爲這是編輯。在你的情況下,可能會導致UI中的字段爲只讀的setValidationEnabledTxt()方法出現問題。

嘗試添加「this」到您的代碼,以便它讀取this.isValidationEnables = Boolean.parseBoolean(onOff);

+0

沒有效果,謝謝steve –

+0

請嘗試使用表達式語言綁定到豆建議,然後更新是否修復它。如果這不起作用,那麼嘗試將該字段的類型從布爾型更改爲字符串,然後從那裏回溯。 (布爾*應該*就好了) –