我已经使用BalusC 的模板开始了我自己的自定义标记处理程序(纯 XHTML,没有 Renderer),我们称之为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
属性添加到组件本身可以解决此问题。