【发布时间】:2011-09-28 15:26:26
【问题描述】:
我的复合组件 (cc) 创建了一个 inputText-Field。重要的部分是,它的呈现取决于模型属性“可见”。模型通过参数 "name" 提供给组件。
<cc:interface>
<cc:attribute name="name" required="true"/>
</cc:interface>
<cc:implementation componentType="ch.sbi.pt.components.PMSInputText">
<h:inputText value="#{cc.attrs.name.value}" rendered="#{cc.attrs.name.visible}"/>
</cc:implementation>
在视图中,我有一个具有 2 个单元格/行的 panelGrid:第一行有一个标签和我的 cc,第二个并不重要。标签使用与我的 cc 相同的模型属性呈现自己。
<h:panelGrid columns="2">
<h:outputText value="Name" rendered="#{person.name.visible}"/>
<sbic:pmsInputText name="#{person.name}"/>
<h:outputText value="Next Label"/>
<sbic:pmsInputText name="#{something.name}"/>
</h:panelGrid>
如果“visible”-property 返回“false”,结果(和问题)如下:
没有任何组件被渲染(完美!)但是 cc 生成的 HTML 会留下一个空单元格(例如<td></td>),这会导致布局丑陋的 HTML 表格(偏移一个单元格):
<table>
<tbody>
<tr>
<td></td>
<td>Next Label</td>
</tr>
....
据我了解,这与生命周期有关(jstl 与 jsf):我的 cc 在 <h:outputText../> 之前呈现,但我怎样才能摆脱空单元格(例如 <td></td>)?我在这里错过了什么吗?
感谢您的帮助,专家! 马克
【问题讨论】:
-
“JSTL vs JSF”是什么意思?这里面没有任何 JSTL 的东西。您不会混淆/误解什么是 JSTL 吗?继续阅读:stackoverflow.com/tags/jstl/info
-
是的,我是。我的错。谢谢。
标签: jsf jsf-2 lifecycle composite-component