【问题标题】:Struts 2 jQuery Datepicker format issueStruts 2 jQuery Datepicker 格式问题
【发布时间】:2013-07-13 17:26:34
【问题描述】:

我有一个实体user,它使用datepickers 的jQuery插件从Struts 2表单接收日期,每当我将日期格式从mm/dd/yyy/更改为mm/yyyy时,它不再正确设置日期即使用户仍然必须在默认情况下使用日历选择 month/day/year

所以我的问题是,是否有解决此问题的方法或更改数据从表单传递到实体的方式以使其正常工作?

表格摘录:

<tr>
  <td style="border: 0px;">Contract Start-1</td>
  <td style="border: 0px;">
    <sj:datepicker name="user.nat_gas_start1" displayFormat="mm/dd/yy" yearRange="20011:2020" value="currentUser.nat_gas_start1"/>
  </td>
</tr>
<tr>
  <td style="border: 0px;">Month Shopping For-1</td>
  <td style="border: 0px;">
    <sj:datepicker name="user.nat_gas_end1" displayFormat="mm/yy" yearRange="20011:2020" value="currentUser.nat_gas_end1"/>
  </td>
</tr>

实体摘录(日期为 Java SQL):

public void setNat_gas_start3(Date nat_gas_start3) {
    this.nat_gas_start3 = nat_gas_start3;
}

public Date getNat_gas_end1() {
    return nat_gas_end1;
}

表单执行和操作覆盖现有值并通过 Hibernate 将它们传递到数据库中。在我将结束日期格式切换为 mm/yyyy 格式之前,它一直有效。

【问题讨论】:

  • 如果日期转换不正确,则使用自定义转换器。
  • 我认为我可能必须这样做,但我试图避免这样做。

标签: java jquery hibernate struts2 struts2-jquery


【解决方案1】:

您不应该切换日期格式,日期格式'mm/yyyy'被错误地处理,结果错误的日期值被转换为动作。以下是正确日期格式的示例:

<sj:datepicker value="today" id="date3" name="date3" displayFormat="dd.mm.yy" label="Today" />
<sj:datepicker value="yesterday" id="date4" name="date4" displayFormat="mm/dd/yy" label="Yesterday" />
<sj:datepicker value="tomorrow" id="date5" name="date5" displayFormat="DD, d MM yy" label="Tomorrow" />
<sj:datepicker value="2004-08-14" id="date6" name="date6" displayFormat="d M, yy" label="String Value" />

【讨论】:

  • 有没有办法让日期在选择后显示为“mm/yyyy”,但仍然可以正确拉入,而无需编写自定义转换器?
  • 编写字符串设置器并手动解析日期字符串,但使用这种格式你错过了一天。
  • 这就是我最终要做的事情我只是将它作为一个字符串读入,然后将其解析为一个日期并将日期设置为 1,因为它真的没有不管我在一个月中的哪一天。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-27
  • 1970-01-01
相关资源
最近更新 更多