我使用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
属性添加到组件本身会修复该问题。
答案 0 :(得分:1)
将rendered
属性的支持添加到标记文件中,并将其重新应用于标记文件的内容。
<bean:input label="input1:" bean="#{bean1}" property="name" rendered="..." />
我有点犹豫将我的代码实现包装在一个大
中<c:if test="#{rendered}">
这可能很难看,但是这是一种方式。