rich:日历值在bean中不变

时间:2019-01-10 09:38:27

标签: jsf

我有以下xhtml代码段,其中有两个rich:calendar(简单来说,搜索的日期范围):-

    <h:panelGroup>
            <h:outputText value="#{msg['lblstrtdteh']}" />
            <h:outputText value="   *" escape="false" styleClass="reqField" />
        </h:panelGroup>
        <rich:calendar id="startDateFldVhrs" datePattern="dd-MM-yyyy" locale="#{sessionBean.locale}"
            value="#{productsBean.startDate}" />

        <h:panelGroup>
            <h:outputText value="#{msg['lblenddteh']}" />
            <h:outputText value="   *" escape="false" styleClass="reqField" />
        </h:panelGroup>
        <rich:calendar id="endDateFldVhrs" datePattern="dd-MM-yyyy"
            value="#{productsBean.endDate}" />

这是我的bean的访问者:-

    /**
 * 
 * @return
 */
public Date getStartDate() {
    return startDate;
}

/**
 * 
 * @param startDate
 */
public void setStartDate(Date startDate) {
    this.startDate = startDate;
    System.out.println("setting startDate: " + startDate);
}

/**
 * 
 * @return
 */
public Date getEndDate() {
    return endDate;
}

/**
 * 
 * @param endDate
 */
public void setEndDate(Date endDate) {
    this.endDate = endDate;
    System.out.println("setting endDate: " + endDate);
}

当我选择的日期与显示的日期不同时,我看不到setter方法的打印,当触发搜索按钮时(这两个日期都在搜索commandButton中执行),它也不会采用显示的值。 我缺少什么了吗?

这些字段已用new Date()初始化,并且永远保持这种状态。

1 个答案:

答案 0 :(得分:0)

在JSF中,仅在调用动作时(例如,在渲染或处理字段时,在将数据发布到服务器中时,在调用某些AJAX时)才调用set方法。

如果您想让rich:calendar调用您的set方法,则显示执行一些AJAX并更新您的字段。

Richfaces <= 3.X

 <a4j:form>
      <rich:calendar value="#{bean.date}" id="myCalendar">
          <a4j:support event="onchanged" reRender="myCalendar" ajaxSingle="true"/>
      </rich:calendar>
 </a4j:form>

Richfaces 4.X +

<rich:calendar id="myCalendar">
    <a4j:ajax event="change" execute="myCalendar" />
</rich:calendar>