JSF提出了问题

时间:2011-05-11 07:49:10

标签: jsf-2 el

是否真的应该对使用render =“false”的元素进行EL解析?这导致我很多空指针异常和类似的问题。看下面的例子:

<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不支持null tree - 属性。在这种情况下,getTreeName(int index)返回null,然后调用getCompetenceTree(3),返回null,即使其父(p:tab)有rendered="false"

简而言之:xdin:competenceTable由EL解析,即使它的父级有rendered="false"。为什么呢?

1 个答案:

答案 0 :(得分:3)

看看下面的JSF生命周期。

渲染只是最后一个阶段,rendered="false"仅影响最后阶段,而构造组件的错误发生在第一阶段。

非渲染组件 实际上在所有阶段都不会做任何事情,但看起来你的组件不符合规范的那一部分。

enter image description here