JSF El在编译时执行

时间:2014-01-20 15:07:50

标签: jsf jsf-2

我在我的项目中使用JSF 2.0。我对实施感到震惊。目前我正在为数据表/树表实现一个复合组件。我正在为数据表和treetable创建一个通用组件。使用此复合组件的用户必须传递一个布尔值来表示树表或数据表中的显示数据。

<cc:attribute name="treeMode" default="false" type="java.lang.Boolean"/>

<p:dataTable rendered="#{cc.attrs.treeMode == 'false'} id="#{cc.attrs.id} value=".../>
<p:treeTable rendered="#{cc.attrs.treeMode == 'true'}" id="#{cc.attrs.id} value=".../>

如果我需要数据表,我使用

  <nav:navDataGrid
     id="testTable"
     treeMode="true"
     databean="testBean" .../>

我也传递ID属性。但我的问题是当使用上面的代码我正在使用复合组件时

Component ID testTable:testTable has already been found in the view.  

我认为那是因为它正在呈现数据表和树表。当我传递treeMode = tree时,为什么数据表会被渲染?我该如何解决这个问题? 是否还有其他选项为TreeTable创建一个复合组件?

1 个答案:

答案 0 :(得分:1)

请记住,在JSF中,组件模型在生成和呈现响应之前在生命周期中构建了几个步骤。因此,即使这两个组件永远不会同时呈现,它们每个都需要不同的ID。