JSF提出了问题

Ras*_*nke 5 el jsf-2

是否真的应该对使用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>
Run Code Online (Sandbox Code Playgroud)

主要问题(除了性能)是xdin:competenceTable不支持null tree-attribute.getTreeName(int index)在这种情况下返回null,然后调用getCompetenceTree(3)返回null,即使它的parent(p:tab)有rendered="false"

简而言之:xdin:competenceTable即使它是父级的,也会被EL解析rendered="false".为什么?

Mic*_*rdt 3

看一下下面的 JSF 生命周期。

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

事实上,非渲染组件在所有阶段都不应该执行任何操作,但看起来您的组件似乎不符合规范的该部分。

在此输入图像描述