2017-03-03 11 views
1

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コンポーネントがあります。デフォルトの最初の項目では、「オファーを選択:」にはヌル値があり、その値は選択に使用されません。さらに、リスナーを使用して、次のコンポーネントを更新するために値を変更します。しかし、私が値を変更しようとすると、何も起こっていません。しかし、ドロップダウンメニューから最初の項目を選択すると、リスナーは訪問したことを表示します。間違いはどこですか?私はそのような奇妙な行動を理解できません)

+0

値を直接処理する場合は、ajaxイベントにprocess = "@ this"を追加する必要があります。そうでない場合はcommandButtonを使用してサブミットする必要があります。通常のデータ型を値として使用する場合は、commandButtonを使用してサブミットしたい場合は、コードは正しいです。しかし、おそらくあなたはカスタムオブジェクトでSelectOneMenuを使用しようとします。それがうまくいかない場合は、コンバーターが必要です。あなたのお豆を見せることができますか?エラーメッセージが表示されますか? – lastresort

+0

@lastresortはい、私はコマンドボタンを使いたいです。あなたは私がカスタムオブジェクトを使用するのは正しいです。だから、あなたの答えは正しく私はコンバータを追加したと働いていた!どうもありがとうございました! – catscoolzhyk

答えて

0

@lastresortのおかげで! SelectOneMenuコンポーネントを値として使用したとき、私はカスタムオブジェクトを追加しました。

このようなコンポーネントでカスタムオブジェクトを使用するには、custom converterを追加する必要があります。

関連する問題