2015-10-27 5 views
0

Я хочу назначить динамическое значение для ввода на странице xhtml. ManagedBean содержит 3 строки атрибутов: СпециальноеПоле1, customField2 и СпециальноеПоле3Как построить динамическое имя атрибута в xhtml - JSF

На странице Xhtml Я цикл по списку значений custruct компонентов:

<ui:repeat value="#{listBean.customFields}" var="item" varStatus="status"> 
<div > 
    <p:outputLabel value="#{item.label}" /> 
    <br /> 
    <c:set var="test" value="#{'myBean.customField'.concat(status.index)}"/> 

    <p:inputText value="#{test}" /> 
</div> 
</ui:repeat> 

То, что я сделал для конкатенации не работает так как оно что все выражение является строкой, поэтому он не может связывать «# {test}» с атрибутом bean.

Вы думаете, что это можно сделать в jsf?

благодарит заранее!

+0

Cant вы просто сделать 'значение = "# {myBean.customField} # {status.index}"' –

+0

Я пытался that..It не работает => javax.el. PropertyNotFoundException: page.xhtml value = "# {myBean.customField} # {status.index}": Класс 'com.xxx.yyy.zzz.MyBean' не имеет свойства 'customField' – javaxiss

+0

does customField имеют общедоступные getters/сеттеры в вашем бэкбоне? –

ответ

1

Пожалуйста, попробуйте

<p:inputText value="#{myBean['customField'.concat(status.index)]}"/> 
+0

Спасибо за ваш ответ .. это не работает: javax.el.PropertyNotFoundException: page.xhtml value = "# {myBean.customField} # {status.index}": класс 'com.xxx.yyy.zzz.MyBean 'не имеет свойства customField. Кстати, в xhtml появилось предупреждение о синтаксисе EL, начинающемся с concat – javaxiss

+1

Ваше сообщение об ошибке не соответствует ответному коду. – BalusC

+0

Извините! Ты прав ! Я думаю, что это работает и правильно связывает. Однако, поскольку у меня есть только customField1, customField2 и customField3, я помещаю # {myBean ['customField'.concat (status.index + 1)]}, и я получил это сообщение об ошибке: Класс' com.xxx.yyy.zzz.MyBean 'не имеет свойства customField4. Обратите внимание, что customFields содержит только 3 элемента ... Я не понимаю, почему это происходит до customField4, несмотря на длину списка = 3. При отображении выражения EL я получил 1, 2 и 3! Я в замешательстве. Почему он делает дополнительную итерацию в привязке? – javaxiss