【问题标题】:tr:validateDateTimeRange, validation error on selecting current date when setting max date as current datetr:validateDateTimeRange,将最大日期设置为当前日期时选择当前日期时出现验证错误
【发布时间】:2015-09-17 07:16:33
【问题描述】:

我使用 Trinidad 2.1 并使用 tr:validateDateTimeRange 在 trinidad 输入日期标签中设置最大日期,

<tr:inputDate id="frmCal" value="#{reportsBackingBean.reportsModel.searchFromDt}">                                      
<tr:validateDateTimeRange maximum="#{reportsBackingBean.maxDate}" />

当我选择当前日期并提交显示验证错误“日期必须在 2015 年 9 月 17 日或之前”的表单时,此处报告BackingBean.maxDate 指的是当前日期和日期选择器。 这是实际行为吗?我需要当前日期应该被接受。请帮忙

【问题讨论】:

  • 设置上下文参数(web.xml)javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONEtrue后能否重试?
  • @JasperdeVries 谢谢。我在 web.xml 的javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE 中添加了这个,但显示了相同的错误消息。所以我为 searchFromDt 和 maxDate 设置了 getActualMaximum Calendar cal = Calendar.getInstance();cal.setTime(searchFromDt);cal.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DAY_OF_MONTH), cal.getActualMaximum(Calendar.HOUR), cal.getActualMaximum(Calendar.MINUTE),cal.getActualMaximum(Calendar.SECOND));searchFromDt = cal.getTime();。现在两者都具有相同的值 Sep 17 11:59:59 EDT 2015。即使那样,也没有运气。
  • 显然最大值不包括在内?我不熟悉特立尼达,但我希望在标签文档中看到这个问题。

标签: jsf myfaces trinidad


【解决方案1】:

MyFaces 更改了 validateDateTimeRange 的实现。您必须给出“小时、分钟、秒、毫秒”的最大值。
试试这个:

<code>Calendar cal = Calendar.getInstance();
cal.setTime(maxDate);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 59);
maxDate = cal.getTime();
</code>

Note:maxDate 是您在reportsBackingBean 中拥有的变量。

https://myfaces.apache.org/trinidad/trinidad-api/tagdoc/tr_validateDateTimeRange.html

【讨论】:

    猜你喜欢
    • 2014-12-07
    • 2021-11-05
    • 2011-04-09
    • 2012-11-20
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多