2016-04-19 24 views
1

私はマルチライン編集ボックスを使用しています(最初に表示されています)。編集可能ではありません。 しかし、SECOND ONEは編集可能です。私のポイントは、inputTextAreaの値で式を使用すると編集できないということです。 私はそれが私が逃したものを見つけることができませんでしたか?XPages inputTextAreaは編集可能ではありません

FIRST ONE:ONE

<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> 

SECOND:

<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」 ( "改行"がなく、 "C/o"がないフィールドの値のみを表示する:( –

+1

値を操作したい場合は、シンプルでハッキングから複雑なものまでのいくつかのオプションがありますXPages/JSF。1)フィールドをdocument1の代わりにスコープ変数にバインドしてからse tのスコープ付き変数を読み込み、hiddenInputに改行を追加し、欠落している場合は "C/o"を追加します。 2)セーブロジックに改行と "C/o"を追加します。 3)カスタムコンバータを使用して、必要なものを追加します。 4)DominoDocumentをラップするフィールドの背後にあるBeanを使用する場合は、カスタムセッターで操作します。 (他にもオプションがあるかもしれません。) –

関連する問題