2

アカウント番号と2つの日付フィールドを保持するドロップダウンがあります。ドロップダウンの値を変更した場合、日付フィールドをリセットしたい。これらのフィールド(アカウント番号、日付から日付まで)を使用してクエリを実行する検索ボタンもあります。

<fieldset>
    <p:selectOneMenu id="account_search" value="#{accountHistoryBean.account}" converter="accountConverter">
        <f:attribute name="itemsList" value="#{accountHistoryBean.userAccounts}"/>
        <f:selectItems value="#{accountHistoryBean.userAccounts}" var="account" itemLabel="#{account.number}" itemValue="#{account}"/> 
        <p:ajax update="start_date_search, end_date_search" event="change" actionListener="#{accountHistoryBean.resetDates}" process="account_search"/> 
    </p:selectOneMenu>
<fieldset>

<fieldset>
    <p:calendar value="#{accountHistoryBean.fromDate}" id="start_date_search" pattern="dd/MM/yyyy"/>
</fieldset>

<fieldset>
    <p:calendar value="#{accountHistoryBean.toDate}" id="end_date_search" pattern="dd/MM/yyyy"/>
</fieldset>



<fieldset>
    <p:commandLink styleClass="regular_button" action="#{accountHistoryBean.search}" update=":search :accountHistoryList :accountHistoryList:accountHistTable" >
        <span>#{msj.search}</span>
     </p:commandLink>
 </fieldset>

私が次のことをした場合:

  1. 「日付から」および「日付まで」フィールドを変更します
  2. アカウントフィールドを変更します(ajaxのドロップダウン)。

その後、日付はデフォルト値にリセットされます。

しかし、私が次のことをした場合:

  1. 「FromDate」および「toDate」フィールドをDATEXおよびDATEYに変更します
  2. 検索を押す
  3. 「FromDate」および「toDate」フィールドをDATEX2およびDATEY2に変更します
  4. アカウントフィールドを変更します(ajaxのドロップダウン)。

次に、[日付]フィールドをDATEXおよびDATEY(デフォルト値ではない)に変更します。

Beanのメソッドは次のとおりです。

public void resetDates()
{
    Calendar calendar = GregorianCalendar.getInstance();
    //By default set toDate as 3/3
    calendar.set(Calendar.MONTH, 2);
    calendar.set(Calendar.DAY_OF_MONTH, 3);
    toDate = calendar.getTime();
    //By default fromDate is one month earlier
    calendar.setTime(toDate);
    calendar.add(Calendar.MONTH, -1);
    fromDate = calendar.getTime();
}

public String search(){
    //Just update the filters
    lazyDataEntityModel.setUpdateData(true);
    return null;
}

何か助けはありますか?

4

2 に答える 2

6

私が変更され

<p:ajax update="start_date_search, end_date_search" 
        event="change" 
        actionListener="#{accountHistoryBean.resetDates}"
        process="account_search"/> 

為に

<p:ajax update="start_date_search, end_date_search" 
        event="change"
        listener="#{accountHistoryBean.resetDates}" 
        process="account_search"/> 

そしてそれはうまくいきました。

ありがとう

于 2012-04-25T17:11:47.013 に答える
1

正解はコンバーターについてです。h:selectOneMenu の value プロパティを確認してください!! 正しくマッピングされていません。それでも疑問がある場合は、immediate="true" を設定すると、コンバーターやバリデーターが機能しなくなります。それが私がやったことであり、働きました.....4〜6時間後....:|

コンバーターのアイデアに感謝します。それが正しい答えを提供してくれたヒントでした。

于 2012-07-03T12:15:03.967 に答える