0

1つ目のスケジュールに日付を入力すると欲しいカレンダーが2つあり、2つ目のカレンダーのテキストエリアに自動表示されます。私はこのコードで試しましたが、結果はありません:

<dd>
  <f:validateBean validationGroups="#{param['validationGroup']}">
    <p:calendar id="debutSortie" showOn="focus" locale="fr" pattern="dd/MM/yyyy"    value="#{AAA.dateDebut}" styleClass="datepicker">
      <p:ajax event="keyup" update="formDate:dateFin"/>
    </p:calendar>

    <h:graphicImage styleClass="js-datepicker-focus" width="19" height="19"
        alt="Voir le calendrier" value="/statique/images/pictos/picto_calendrier.png"/>
  </f:validateBean>
</dd>

<dt>
  <h:outputLabel for="finSortie_input">Date Fin : </h:outputLabel>
</dt>

<dd>
  <f:validateBean validationGroups="#{param['validationGroup']}">
    <p:calendar id="dateFin" showOn="focus" locale="fr" value="#{AAA.dateFin}"  pattern="dd/MM/yyyy" styleClass="datepicker">
    </p:calendar>

    <h:graphicImage styleClass="js-datepicker-focus" width="19" height="19" alt="Voir le calendrier" value="/statique/images/pictos/picto_calendrier.png"/>
  </f:validateBean>
</dd>

このメソッドをテストに追加しました

public void dateChangedListener(DateSelectEvent event) {
    System.out.println("DateSelectEvent" +event.getDate());
}

しかし、私はこのエラーメッセージを持っています:

 javax.faces.FacesException: Method not found: bean@31f8fd9.dateChangedListener(javax.faces.event.AjaxBehaviorEvent) 
4

1 に答える 1

0

最初のカレンダーの日付で更新するように 2 番目のカレンダーをどこに指示していますか? あなたはそれを更新していますが、価値はありません。これを行うための最も簡単な方法は、ajax を使用してリスナーをサーバーに呼び出すことです。

<p:ajax event="dateSelect" update="formDate:dateFin" listener="#{AAA.dateChangedListener}"/>

次のように処理します。

public void dateChangedListener(){
   dateFin = new Date(dateDebut.getTime());
}

ajax 呼び出しでは、2 番目の日付を最初の値で更新するだけです。

于 2013-02-04T21:21:13.927 に答える