Я начал свой собственный пользовательский манипулятор (чистый 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
к самим компонентам исправляет это.
«Добавление поддержки» здесь означает применение его ко всем дочерним компонентам или простому «» в пользовательском файле тегов? –
mabi
Ваш выбор. '' работает во время времени сборки. Выполняется '' во время просмотра рендеринга. Если у вас есть видимые бобовые объекты и используются Mojarra старше, чем 2.1.18, то '' ломает просмотр боковых областей, если свойство, находящееся за атрибутом «rendered», ссылается на свойство beobe area. –
BalusC
Поскольку я могу контролировать среду, я обновился до Mojarra-2.1.22 и теперь использую '' в файле tag. Спасибо за ответ! –
mabi