这是一个老问题,很多人之前已经问过,但在阅读完这些问题和答案后,我无法解决问题。这是非常简单的情况,面板里面的面板是提交按钮来渲染结果面板。如果我添加immediate =“true”它正在工作,但不完全像我想要的那样。这基本上和Primeface的展示中的Showcase示例一样简单,但仍然无法正常工作。
案例:当我按下AJAX搜索按钮时,它永远不会进入我的托管bean partnerController.search()。为什么不呢?
<p:row>
<p:column></p:column>
<p:column><p:commandButton actionListener="#{partnerController.search()}" value="AJAX Search" style="width: 210px; height: 40px;" ajax="true" update="result"/></p:column>
</p:row>
</p:panelGrid>
</p:panel>
<br />
<p:panel id="result" rendered="#{partnerController.result.size()>0}">
<p:scrollPanel style="width:250px;height:200px">
<p:dataGrid var="partner" value="#{partnerController.result}" columns="3">
<p:panel header="#{partner.name}" style="text-align:center">
<h:panelGrid columns="1" style="width:100%;" styleClass="noBorders">
<h:outputText value="#{partner.contactPerson}" />
<h:outputText value="#{partner.address}" />
<h:outputText value="#{partner.phone}" />
<h:outputText value="#{partner.email}" />
</h:panelGrid>
</p:panel>
</p:dataGrid>
</p:scrollPanel>
</p:panel>
</h:form>
我现在在控制器中使用了一个模型:
public List<Partner> search(){
System.out.println("search()search()search()search()search()search()search()");
result = new ArrayList<Partner>();
Partner test = new Partner();
test.setName("Steve Stacko'partner");
test.setContactPerson("Sami");
result.add(test);
System.out.println("----------off-----------");
return result;
}
如果没有immediate =“true”,它永远不会进入managedBean的搜索方法。 Primefaces的展示说它正在以这种方式工作,但不是我的情况。
以下是Primefaces展示:http://www.primefaces.org/showcase-labs/ui/commandButton.jsf
谢谢你的帮助! BTW我正在使用PF 3.4-SNAPSHOT版本。 萨米