JSF と PrimeFaces の使用に少し問題があります。<p:selectonemenu>
2 つの と 2つの を持つフォームがあり<h:outputText>
ます。最初の内容が<p:selectonemenu>
2 番目を更新し、2 つ<h:outputText>
の が 2 番目の で更新され<p:selectonemenu>
ます。両方<p:selectonemenu>
の s は、バッキング Bean の値に依存しています。<h:outputText>
問題は、FIRST<p:selectonemenu>
の値が変更されたときに s をクリアできなかったことです。
<f:ajax>
現在表示されているエンティティの内容をクリアするためにリスナーで使用してみました。
xhtml は次のとおりです。
<h:outputText value="#{bundle.BailmentFamiliesLabel_bailmentFamCode}"/>
<p:selectOneMenu id="bailmentFamilyCode" value="#{bailmentsController.selected.bailmentFamId}" required="false">
<f:selectItems value="#{bailmentFamiliesController.itemsAvailableSelectOne}" var="famid"/>
<f:ajax event="change" render="description price bailmentCode" listener="${bailmentsController.clearView(famid)}"/>
</p:selectOneMenu>
<h:outputText value="#{bundle.BailmentsLabel_bailmentCode}"/>
<p:selectOneMenu id="bailmentCode" value="#{bailmentsController.selected}" required="false">
<f:selectItems value="#{bailmentsController.itemsAvailableSelectOneByFamId}"/>
<f:ajax event="change" render="globalForm" listener="#{bailmentsController.view(bailmentsController.selected.bailmentCode,bailmentsController.selected.bailmentFamId)}" />
</p:selectOneMenu>
<h:outputText value="#{bundle.Label_description}"/>
<h:outputText value="#{bailmentsController.selected.description}" title="#{bundle.Title_description}" id="description"/>
<h:outputText value="#{bundle.BailmentsLabel_purchasePriceMsj}"/>
<h:outputText value="#{bailmentsController.selected.purchasePrice}" title="#{bundle.BailmentsTitle_purchasePrice}" id="price"/>
そして<p:selectonemenu>
bailmentsController の最初のリスナー:
public void clearView(BailmentFamilies bf) {
if (bf != null) {
current = new Bailments();
current.setBailmentFamId(bf);
}
}
私のデータベースでは、各 Bailment に BailmentFamily が割り当てられているため、2 段階のフィルターを使用しています。1 つ目<p:selectonemenu>
は利用可能なすべての BailmentFamilies を一覧表示し、2 つ目<p:selectonemenu>
は選択した BailmentFamily で利用可能なすべての Bailments を表示します。s には、選択した Bailmentの<h:outputText>
情報が表示されるため、BailmentFamily が変更されたときにそれらをクリアする必要があります。
誰かが別の行動方針を提案できますか? これは生産的であることが証明されていないためです。どうもありがとうございました。