2016-04-19 3 views
1

Когда я использую multiLine editbox (показано в FIRST ONE), его нельзя редактировать, если документ находится в 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 может написать представленный контент.

В первом примере вы вычисляете строку, и невозможно записать что-то обратно в вычисленную строку. Вот почему поле читается только.

Update:

Если вы хотите исправить значение документа, FIELD перед редактирования затем использовать пользовательский преобразователь вместо:

<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) Привяжите поле к переменной с областью вместо документа 1, затем se t переменная с областью действия при загрузке и имеет скрытый ввод, который добавляет новую строку и «C/o», если отсутствует. 2) Добавьте новую строку и «C/o» в логику сохранения. 3) Используйте специальный конвертер, чтобы добавить все необходимое. 4) Если вы используете бонус за полями, которые обертывают DominoDocument, манипулируйте в пользовательском сеттере. (Могут быть и другие варианты). –

Смежные вопросы