2017-01-12 9 views
2

У меня есть настраиваемый элемент управления для редактируемого поля, а проверка выполняется через java bean. Я хочу, чтобы установить свойство IsValid(), чтобы установить загрузочный стиль, как так:Xpages: проверка с использованием java bean с несколькими экземплярами настраиваемого элемента управления

enter image description here

Однако, это не работает, если я помещаю куб.см на странице несколько раз, потому что я ищу на Компонента ID для установки свойства Valid.

Мне нужно либо вычислить идентификатор поля в CC, либо сделать что-то еще подобное post describes.

Я считаю, что я могу вычислить идентификатор текстового поля следующим образом:

<xp:inputText 
       id="${javascript:compositeData.fieldName}" 
       type="text" 
       loaded="${!empty compositeData.placeholder}" 
       required="${compositeData.required}" 
       disableClientSideValidation="true"> 
       <xp:this.attrs> 
        <xp:attr 
         name="placeholder" 
         value="${compositeData.placeholder}" /> 
       </xp:this.attrs> 
       <xp:this.binding><![CDATA[#{javascript:compositeData.dataSource[compositeData.fieldName]}]]></xp:this.binding> 
      </xp:inputText> 

Однако, есть несколько мест, где мне нужно вычислить компонент, такие как

<xp:this.styleClass><![CDATA[#{javascript:"form-group" + (getComponent("inputText1").isValid() ? "" : " has-error")}]]></xp:this.styleClass> 

I должны заменить «inputText1» на вычисленный ID, но не можете понять, как это сделать.

Есть ли лучший/более простой способ?

ответ

5

Почему бы вам не использовать имя составного имени.имя везде, где вы ссылаетесь на идентификатор?

<xp:this.styleClass><![CDATA[#{javascript:"form-group" + (getComponent(compositeData.fieldName).isValid() ? "" : " has-error")}]]></xp:this.styleClass> 
+1

Говард, это было именно то, что я пытался сделать, но не смог правильно получить синтаксис. Спасибо за Ваш ответ! –

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

  • Нет связанных вопросов^_^