Jsf h:dataTable getter调用,尽管呈现=";假;
我有一个dataTable,它的getter在不应该调用的时候被调用。我们将JSF2.2.6与CDI一起使用 以下是xthml文件中的部分:Jsf h:dataTable getter调用,尽管呈现=";假;,jsf,jsf-2.2,Jsf,Jsf 2.2,我有一个dataTable,它的getter在不应该调用的时候被调用。我们将JSF2.2.6与CDI一起使用 以下是xthml文件中的部分: <h:panelGroup rendered="false"> <h:dataTable id="someObjectTable" border="0" width="900" value="#{SomeController.someObjects}" rowClasses="odd, even"
<h:panelGroup rendered="false">
<h:dataTable id="someObjectTable" border="0" width="900"
value="#{SomeController.someObjects}"
rowClasses="odd, even" var="value" columnClasses="formLeft, formRight"
listHeight="">
</h:dataTable>
</h:panelGroup>
这是豆子:
public List<SomeObject> getSomeObjects(){
//... ... ...
return resutList;
}
public List getSomeObjects(){
//... ... ...
返回结果列表;
}
即使dataTable周围的panelGroup将其呈现设置为false,也会调用getSomeObjects。为什么呢?即使它不会被渲染,也应该调用它吗 我找到了一个解决方案,但有点棘手 尝试使用jstl标记
<c:if test="#{renderCondition}">
<h:dataTable id="someObjectTable" border="0" width="900"
value="#{SomeController.someObjects}"
rowClasses="odd, even" var="value" columnClasses="formLeft,formRight"
listHeight="">
</h:dataTable>
</c:if>
模板中是否正确声明了xmlns:h
?如果是这样的话,请编辑问题以包含getter中调用的Thread.dumpStack()
的单个结果,这样我们就可以看到谁在调用它以及为什么调用它。为什么很棘手?请记住,在这种情况下,您不能再使用ajax UpdateEyeah进行渲染。您是对的,它不能使用ajax更新进行渲染,除非它不是从外部更新的。在我的项目中,我从外部更新了它,这就是为什么我没有看到它。