如何在 DateField 中设置默认日期?

How to set default date in DateField?

在我的 ActivitiesFilterControl 组件中,我有两个 DateField,它们(在 .tml 文件中)位于 fieldset 部分:

<fieldset class="float_right">

  <t:label for="dateFrom">${message:search.form.label.dateFrom}</t:label>
  <t:datefield t:id="dateFrom" t:mixins="jquery/CustomDatepicker" t:value="dateFrom"
               t:params="calendarParams.params" format="prop:calendarParams.dateFormat" messages="messages" class="datepicker"/>

  <t:label for="dateTo">${message:search.form.label.dateTo}</t:label>
  <t:datefield t:id="dateTo" t:mixins="jquery/CustomDatepicker" t:value="dateTo"
               t:params="calendarParams.params" format="prop:calendarParams.dateFormat" messages="messages" class="datepicker"/>

</fieldset>

CustomDatepicker 是这个: http://tapestry5-jquery.com/mixins/docscustomdatepicker

如何为 CustomDatepickers/DateFields 设置默认值?这是组件的示例代码:

public class ActivitiesFilterControl extends FilterControl {

  @Persist
  @Property
  private Date dateFrom;

  @Persist
  @Property
  private Date dateTo;

  @InjectComponent("dateFrom")
  private DateField dateFromField;

  @InjectComponent("dateTo")
  private DateField dateToField;

}

只需为渲染阶段初始化组件的字段,例如通过设置渲染注释方法:

@SetupRender
final void init() {
    dateFrom = new Date(); // or sthg else
    dateTo = new Date(); // or sthg else
}

(无需在 java class 中注入嵌入式组件 - 代码的 "dateFromField" 和 "dateToField" 属性)

用于 CustomDatepicker mixin 的 params 参数的 calendarParams 属性 同样的事情:您可以在同一个地方初始化它。

这会告诉 Tapestry 用于生成 HTML 页面并发送回浏览器进行显示的初始值。

注意:关于表单字段值 "dateFrom" 和 "dateTo",这些在您的 @SetupRender 方法中设置的值可能会被验证跟踪器记忆的值覆盖,以防检测到验证错误后重新显示页面。