JSFとPrimeFacesを使用しています。 PrimeFacesコンポーネントpを使用しようとしています:selectOneMenu問題が見つかりました。p:ajaxリスナーがp:selectOneMenuで正しく動作しない
<h:form>
<p:panel header="Select an offer and the date for the report" style="margin-bottom: 10px">
<h:panelGrid columns="2" cellpadding="5px">
<p:outputLabel for="offer" value="Offer: "/>
<p:selectOneMenu id="offer" value="#{partnerSales.selectedOffer}" style="width: 200px;">
<p:ajax event="change" update="year" listener="#{partnerSales.onOfferChange}"/>
<f:selectItem itemLabel="Select an offer: " noSelectionOption="true" itemValue=""/>
<f:selectItems value="#{partnerSales.allOffers}"/>
</p:selectOneMenu>
<p:outputLabel for="year" value="Year: "/>
<p:selectOneMenu id="year" value="#{partnerSales.selectedYear}" style="width: 200px">
<p:ajax update="month"/>
<f:selectItem itemLabel="Select a year: " itemValue="" noSelectionOption="true"/>
<f:selectItems value="#{partnerSales.years}"/>
</p:selectOneMenu>
<p:outputLabel for="month" value="Month: "/>
<p:selectOneMenu id="month" value="#{partnerSales.selectedMonth}" style="width: 200px">
<f:selectItem itemLabel="Select a month: " itemValue="" noSelectionOption="true"/>
<f:selectItems value="#{partnerSales.months}"/>
</p:selectOneMenu>
</h:panelGrid>
<p:separator/>
<p:commandButton value="Send" actionListener="#{partnerSales.displayData}"/>
</p:panel>
</h:form>
したがって、いくつかのオプションを持つselectOneMenuコンポーネントがあります。デフォルトの最初の項目では、「オファーを選択:」にはヌル値があり、その値は選択に使用されません。さらに、リスナーを使用して、次のコンポーネントを更新するために値を変更します。しかし、私が値を変更しようとすると、何も起こっていません。しかし、ドロップダウンメニューから最初の項目を選択すると、リスナーは訪問したことを表示します。間違いはどこですか?私はそのような奇妙な行動を理解できません)
値を直接処理する場合は、ajaxイベントにprocess = "@ this"を追加する必要があります。そうでない場合はcommandButtonを使用してサブミットする必要があります。通常のデータ型を値として使用する場合は、commandButtonを使用してサブミットしたい場合は、コードは正しいです。しかし、おそらくあなたはカスタムオブジェクトでSelectOneMenuを使用しようとします。それがうまくいかない場合は、コンバーターが必要です。あなたのお豆を見せることができますか?エラーメッセージが表示されますか? – lastresort
@lastresortはい、私はコマンドボタンを使いたいです。あなたは私がカスタムオブジェクトを使用するのは正しいです。だから、あなたの答えは正しく私はコンバータを追加したと働いていた!どうもありがとうございました! – catscoolzhyk