Richfaces日历手动输入值不绑定

时间:2010-06-16 06:46:07

标签: seam richfaces

我有一个richfaces日历组件定义为

<rich:calendar id="startDate" value="#{myBean.dateSet.startDate}" 
               timeZone="#{myBean.dateSet.timeZone}"
               datePattern="#{myBean.dateSet.datePattern}"
               enableManualInput="true" immediate="true">
      <a4j:support event="onchanged" action="#{myBean.adjustEndDate}" 
                   reRender="startDate,endDate" ajaxSingle="true" />
</rich:calendar>

当我使用日历弹出/ gui更改日期时,一切正常。

但是,当我通过输入文本字段更改它时,该值未更新到myBean.dateSet.startDate,尽管它正在日历组件本身上正确更新(即,如果我单击日历弹出窗口的图标它显示更新的当前日期。)

有关如何让它正确更新myBean值的任何建议吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

使用oninputchange事件,即跟踪手动更改的事件。

答案 1 :(得分:1)

我不确定这是否有帮助,但如果您想在输入文本字段中获取值,请将其称为<calId>InputDate。因此,在您的情况下,输入文本字段将具有标识startDateInputDate。希望这会有所帮助!

答案 2 :(得分:1)

你可以在rich:calendar组件中使用oninputchange事件,就像Max Katz建议的那样。

例如:

<rich:calendar 
   ...
   oninputchange="invokeCalendarOnChange(event,'#{rich:clientId('$idOfTheCalendar')}')"
   ...
</rich:calendar>

function invokeCalendarOnChange(event, id) {
   var c = RichFaces.$(id);
   c.invokeEvent("change", RichFaces.getDomElement(c.id), event, c.selectedDate);
}

希望有所帮助!