是否真的应该对使用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"
.为什么?
看一下下面的 JSF 生命周期。
渲染只是最后一个阶段,并且rendered="false"
只影响最后一个阶段,而构造组件的错误发生在第一个阶段。
事实上,非渲染组件在所有阶段都不应该执行任何操作,但看起来您的组件似乎不符合规范的该部分。
归档时间: |
|
查看次数: |
5572 次 |
最近记录: |