2013-07-04 4 views
2

Я начал свой собственный пользовательский манипулятор (чистый XHTML, без Renderer), используя BalusC's template, назовем его bean:input - типичный ярлык, ввод, сообщение трио. Он используется так:Могу ли я заставить JSF2 пропускать рендеринг моего пользовательского тега без изменения самого тега?

<h:panelGrid columns="3"> 
    <bean:input label="input1:" bean="#{bean1}" property="name" /> 
    <bean:input label="input2:" bean="#{bean2}" property="name" /> 
    <bean:input label="input3:" bean="#{bean3}" property="name" /> 
</h:panelGrid> 

Проблема в том, что входы являются взаимоисключающими (т.е. только один из них должен появиться). Какой вход показан, определяется во время визуализации с помощью параметра вида. Как мне это сделать?

Я не могу использовать <ui:fragment> как это будет испортить panelGrid, указав rendered="false" на бирке не имели никакого эффекта, и я как бы колеблясь, чтобы обернуть мою реализацию тегов в большом <c:if test="#{rendered}"> - есть лучший/встроенный способ сказать JSF нужно просто пропустить рендеринг этого конкретного тега?


Примечание: <c:if> тег делает смешные вещи (как делает метку, которая не должна быть сгенерирована, но не соответствующее поле ввода), когда я вновь сделать сетку с частичным обновлением. Добавление атрибута rendered к самим компонентам исправляет это.

ответ

1

Добавить поддержку для атрибута rendered в файл тега и повторно применить его к содержимому файла тега.

<bean:input label="input1:" bean="#{bean1}" property="name" rendered="..." /> 

I рода стесняться обернуть реализацию тегов в большом <c:if test="#{rendered}">

Это может быть уродливым, но да это так.

+0

«Добавление поддержки» здесь означает применение его ко всем дочерним компонентам или простому «» в пользовательском файле тегов? – mabi

+1

Ваш выбор. '' работает во время времени сборки. Выполняется '' во время просмотра рендеринга. Если у вас есть видимые бобовые объекты и используются Mojarra старше, чем 2.1.18, то '' ломает просмотр боковых областей, если свойство, находящееся за атрибутом «rendered», ссылается на свойство beobe area. – BalusC

+0

Поскольку я могу контролировать среду, я обновился до Mojarra-2.1.22 и теперь использую '' в файле tag. Спасибо за ответ! – mabi

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

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