jsf2-jsf 2复合组件呈现问题



我的复合组件(cc(创建一个inputText字段。重要的是,它是根据模型属性"可见"来渲染的。该模型通过parm"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>

在视图中,我有一个panelGrid,每行有2个单元格:第一行有一个标签和我的抄送,第二行不重要。标签使用与我的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"-属性返回"false",则结果(也是问题(如下:没有任何组件被渲染(完美!(,但cc生成的HTML留下了一个空单元格(例如<td></td>(,这导致了布局丑陋的HTML表(偏移一个单元格(:

<table>
<tbody>
<tr>
<td></td>
<td>Next Label</td>
</tr>
....

据我所知,这与生命周期(jstl与jsf(有关:我的cc在<h:outputText../>之前渲染,但我如何摆脱空单元格(例如<td></td>(?我是不是遗漏了什么?

感谢您的帮助,专家!Marc

这完全是意料之中的事。组合组件被渲染。只有它的孩子不是。您需要将rendered属性移动到复合组件。

<sbic:pmsInputText name="#{person.name}" rendered="#{person.name.visible}" /> 

相关内容

  • 没有找到相关文章

最新更新