2016-04-19 35 views
1

當我使用multiLine編輯框(顯示在第一個)它不能被編輯如果文檔在editMode中。 但是SECOND ONE是可編輯的。我的觀點是如果在inputTextArea的值處使用公式它不能被編輯。 我找不到那是我錯過了什麼?XPages inputTextArea不可編輯

第一招:

<xp:inputTextarea id="muvName" rows="2" cols="70"><xp:this.value><![CDATA[#{javascript:@Implode(document1.getItemValue("muvName"))+ @NewLine() + "C/o";}]]></xp:this.value></xp:inputTextarea> 

第二個:

<xp:inputTextarea id="muvName" rows="2" cols="70" value="#{document1.muvName}"> 
</xp:inputTextarea> 

回答

3

使用屬性defaultValue來定義默認值:

<xp:inputTextarea 
     id="muvName" 
     rows="2" 
     cols="70" 
     value="#{document1.muvName}"> 
     <xp:this.defaultValue><![CDATA[#{javascript: 
      @Implode(document1.muvName)+ @NewLine() + "C/o" 
     }]]></xp:this.defaultValue> 
    </xp:inputTextarea> 

和使用屬性value用於綁定文件的項目(或範圍變量)添加到可編輯字段。 value必須是XPage可以將提交的內容寫入到的對象。

在你的第一個例子中,你計算一個字符串,並且不可能將某些東西寫回計算的字符串。這就是爲什麼該字段是隻讀的。

更新:

如果要糾正文件字段的值,再進行編輯,然後使用自定義轉換器來代替:

<xp:inputTextarea 
    id="muvName" 
    rows="10" 
    cols="70" 
    value="#{document1.muvName}"> 
    <xp:this.converter> 
     <xp:customConverter 
      getAsObject="#{javascript:value}"> 
      <xp:this.getAsString><![CDATA[#{javascript: 
       if (!value.endsWith("C/o")) { 
        value += @NewLine() + "C/o"; 
       } 
       value 
      }]]></xp:this.getAsString> 
     </xp:customConverter> 
    </xp:this.converter> 
</xp:inputTextarea> 
+0

當我想它的工作,但串「」 C/O」可能不會被添加:( 它只顯示沒有「Newline」且沒有「C/o」的字段的值:( –

+1

)如果要操縱值,有幾個選項,從簡單但黑客到更復雜但標準XPages/JSF。1)將該字段綁定到作用域變量而不是document1,然後se加載範圍內的變量,並有一個hiddenInput,如果缺失,則添加換行符和「C/o」。 2)在保存邏輯中添加換行符和「C/o」。 3)使用自定義轉換器添加任何需要的。 4)如果在包裝DominoDocument的字段後面使用bean,請在自定義設置器中進行操作。 (也可能有其他選項。) –