これは古い問題です。多くの人が以前に尋ねてきましたが、これらの質問と回答を読んでも問題を解決できませんでした。これは非常に単純なケースで、結果パネルをレンダリングする送信ボタンがあるパネル内のパネルです。immediate="true" を追加すると、何らかの形で機能しますが、希望どおりには動作しません。これは基本的に、Primeface の Showcase の 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
私を助けてくれてありがとう!ところで、PF 3.4-SNAPSHOT バージョンを使用しています。サーミ語