一尘不染

值更改侦听器在primefaces日历中不起作用

ajax

我正在使用primefaces 3.2和JSF 2.0

我的情况是我的表单中有文件日期,上次日期和下一个日期。当用户输入文件日期时,我需要更新bean中的文件日期值,以便该值可以用作属性提示的最后日期中的最小日期,因此可以在下一个日期选择中使用。

根据我的知识价值更改侦听器可以在提交表单时执行,所以我不能使用它。我用过 p:ajax
。但是我仍然无法设置文件日期。由于未设置文件日期,因此允许用户选择文件日期之前的上一个日期和下一个日期。

caseMaster.xhtml

<p:calendar value="#{caseUitility.caseMaster.fileDate}" id="fileDate" effect="fadeIn" pattern="dd/MM/yyyy" readOnlyInputText="true">
    <p:ajax event="change" listener="#{caseUitility.dateChange}"/>
</p:calendar>

<p:calendar value="#{caseUitility.caseMaster.lastDate}" required="true" id="lastDate" effect="fadeIn" pattern="dd/MM/yyyy" readOnlyInputText="true" mindate="#{caseUitility.caseMaster.fileDate}" >
</p:calendar>

CaseUitility.java

public void dateChange(ActionEvent ae) {
    System.out.println("File Date: " + caseMaster.getFileDate());
    System.out.println("Hello... I am in DateChange");
}

可以指导我在这里做错什么吗?


阅读 220

收藏
2020-07-26

共1个答案

一尘不染

在PrimeFaces的最新版本中, SelectEvent 应使用下面的代码片段

<p:calendar id="event" value="#{calendarView.date4}">
    <p:ajax event="dateSelect" listener="#{calendarView.onDateSelect}" update="msgs" />
</p:calendar>



public void onDateSelect(SelectEvent event) {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
    facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Date Selected", format.format(event.getObject())));
}

在较早的primefaces版本中使用 DateSelectEvent

<p:ajax event="dateSelect" listener="#{caseUitility.dateChange}"/>



public void dateChange(DateSelectEvent event) {
    Date date = event.getDate();
    System.out.println("File Date: " + date);
    System.out.println("Hello... I am in DateChange");
}
2020-07-26