【发布时间】:2013-07-02 15:23:51
【问题描述】:
我已经使用BalusC's template 开始了我自己的自定义标记处理程序(纯XHTML,无渲染器),我们称之为bean:input - 典型的标签、输入、消息三重奏。它是这样使用的:
<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 属性添加到组件本身可以解决此问题。
【问题讨论】:
标签: jsf-2 custom-tags