是否真的应该评估子元素的 EL 解析为 render="false"的元素?这给我带来了很多空指针异常和类似的麻烦。看下面的例子:
<p:tab title="#{userCompetenceController.getTreeName(3)}" rendered="#{!empty userCompetenceController.getTreeName(3)}">
<xdin:competenceTable id="competenceBox3"
profile="#{userCompetenceController.selectedProfile}"
tree="#{userCompetenceController.getCompetenceTree(3)}"
maxHeight="500px"/>
</p:tab>
主要问题(除了性能)是
xdin:competenceTable
不支持空值 tree
-属性。 getTreeName(int index)
在这种情况下返回 null,然后调用 getCompetenceTree(3)
它返回 null,即使它的父级( p:tab
)有 rendered="false"
简而言之:
xdin:competenceTable
即使它的父级具有 rendered="false"
也被 EL 解析.为什么?
最佳答案
看看下面的 JSF 生命周期。
渲染只是最后阶段,rendered="false"
只影响最后一个阶段,而构建组件的错误发生在第一个阶段。
非渲染组件实际上在所有阶段都不应该做任何事情,但看起来你的组件不符合规范的那部分。
关于jsf-2 - JSF 呈现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5960909/