JSF2中两个日历之间的同步

时间:2013-02-04 10:53:32

标签: jsf-2 primefaces

当我在第一个Schedule I中输入日期时,我有两个日历,我自动显示在第二个日历的文本区域中。 我尝试使用此代码但没有结果:

<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) 

1 个答案:

答案 0 :(得分:0)

你在哪里告诉第二个日历要更新第一个日历的日期?你正在更新它,但没有任何价值。最直接的转发方式是使用ajax将侦听器调用到服务器中。

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

以这种方式处理:

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

在ajax调用中,只需使用第一个值更新第二个日期。