2014-10-06 2 views
3

Я пытаюсь установить значение для поля (которое не находится внутри регулятора повтора) из поля, которое находится на регуляторе повтора.xpages задает значение для поля из поля повтора

поле от повторения:

<xp:inputText id="inputText2" disabled="true"> 
     <xp:this.value><![CDATA[#{viewScope.field_2[index]}]]></xp:this.value> 
     <xp:eventHandler event="onchange" submit="true" 
        refreshMode="partial" refreshId="sus"> 
        <xp:this.action><![CDATA[#{javascript:getComponent("inputText4").setValue("1234");}]]></xp:this.action> 
     </xp:eventHandler> 
</xp:inputText> 

И цель поле, как вы можете заметить, что внутри панели, ID = «Сус».

Также поле цели привязывается к полю формы.

, но не назначено значение. Как я могу это достичь?

+0

Включен ли ваш SSJS? –

+1

@PaulStephenWithers В этом же случае я добавил еще одну строку: getComponent ("inputText1"). SetValue ("1234") // где inputText1 - это поле повтора. Значение добавлено для этого поля, но не для указанного выше поля (которое находится вне регулятора повтора) –

+0

У вас есть элемент управления inputText4 также в пределах повтора? –

ответ

3

Компоненты - это только визуализация модели данных позади. Всегда привяжите к вашим элементам управления и пойдите после значения модели, а не компонента. Запрещенный inputText не может запустить значение, а в фрагменте кода выше disabled="true". Событие onchange не может срабатывать.

Это будет работать:

<xp:inputText id="inputText2" disabled="false"> 
    <xp:this.value><![CDATA[#{viewScope.field_2[index]}]]></xp:this.value> 
    <xp:eventHandler event="onchange" submit="true" 
       refreshMode="partial" refreshId="sus"> 
       <xp:this.action><![CDATA[#{javascript:viewScope.someValue=42;}]]></xp:this.action> 
    </xp:eventHandler> 
</xp:inputText> 

Ваша цель управления будет выглядеть следующим образом:

<xp:inputText id="inputText4" value="#{viewScope.someValue}"> 
</xp:inputText> 

Если ваша цель управления связана с чем-то другим (например #{document1.test}), они ваш код должен обновить вон тот. (document1.replaceItemValue("test",42))

Опять 3 важный аспект:

  1. Никогда не ложитесь после элементов пользовательского интерфейса, всегда обновить связанную модель позади (ака: Поговорите с данными, а не пользовательский интерфейс также известен как: The обновление контроллера Эта модель, а не вид)
  2. Убедитесь, что ваша цель является частью обновленных полей
  3. поля для инвалидов не срабатывают событий

Дайте нам знать, как это работает

+0

Спасибо за ваш ответ. 1. Я добавил код вопроса в событие onChange поля, которое не отключено, но все еще не работает. 2. После добавления значения в viewScope, как я могу передать его в соответствующее поле (извне повтора), которое уже привязано к полю формы? –

+0

Полный код даст полные ответы. Вы не указали, что ваше целевое поле привязано к источнику данных. Не меняет большую часть решения. Поговорите с DATA, а не с пользовательским интерфейсом! Решение обновлено выше – stwissel

+0

Благодарим вас за отличные советы и объяснения. Хорошего дня. –

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