这是老问题,以前很多人都问过这个问题,但是在阅读了这些问题和答案后,我无法解决我的问题。这是一个非常简单的情况,面板内部的面板是提交按钮以呈现结果面板。如果我添加 immediate="true" 它以某种方式工作,但并不完全像我想要的那样。这基本上就像 Primeface 展示中的展示示例一样简单,但仍然无法正常工作。
案例:当我按下 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
谢谢你帮助我!顺便说一句,我使用的是 PF 3.4-SNAPSHOT 版本。萨米人