当我想要Ajax更新一个组件时,为什么我需要在另一个组件中嵌套一个呈现=“#{一些}”的组件?所以我找到了一些接近这个问题的答案,我找到了足够多的答案来解决我的问题。但即使如此,我还是很好奇能不能理解这件事的运作方式。让我举例说明:我有手帕.xhtml看起来像这样的页面(短页)。<h:form id="resultForm">
<h:panelGroup class="search_form" layout="block">
<h:inputText id="lastname" value="#{search.lastname}"/>
<h:commandButton action="#{search.find}" value="Find">
<f:ajax execute="lastname" render="resultDisplay"/>
</h:commandButton>
</h:panelGroup>
<h:dataTable value="#{search.searchResults}" var="results" id="resultDisplay"
rendered="#{!empty search.searchResults}">
<h:column>
#{results.field} </h:column>
</h:dataTable></h:form>现在,为了简洁起见,我不会发布所有支持bean代码,但是我有这样的内容:public void find() {
searchResults = setResults(true);}哪里searchResults是ArrayList<Objects>..搜索之后,它不会在多个测试中被选中(可以是NULL,但在我正在做的测试中不是空的)。现在。这不管用。但如果我筑巢dataTable在另一个里面,比如说panelGroup它会起作用的。<h:panelGroup id="resultDisplay">
<h:dataTable value="#{search.searchResults}" var="results"
rendered="#{!empty search.searchResults}">
<h:column>
#{results.field} </h:column>
</h:dataTable></h:panelGroup>现在,这种变化允许一切正常工作。我不会介意的.。但我想我也在寻求一些理解。对我为什么要嵌套这些组件有任何见解吗?我肯定漏掉了什么!
1 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
另见:
添加回答
举报
0/150
提交
取消