gpt4 book ai didi

date - Primefaces 日历允许无效日期

转载 作者:行者123 更新时间:2023-12-01 01:17:47 25 4
gpt4 key购买 nike

我正在使用 primefaces 日历,但我可以输入无效日期。例如在日期字段的输入框中输入日期为 32-06-2012 并保存记录。它将日期保存为将日期保存为 02-07-2012。在primefaces的展示中也可以观察到相同的行为。

引用:http://www.primefaces.org/showcase/ui/calendarBasic.jsf

这是我的代码

<p:calendar id="copyStartDateCalendar" pattern="dd/MM/yyyy"

mode="popup" showOn="button" size='8' >

<f:convertDateTime pattern="MM/yyyy" />

</p:calendar>

应该怎么做,因为组件本身似乎存在一些错误。

感谢和问候

塔伦·马丹

最佳答案

我在primefaces日历上遇到了类似的问题。

对于一个,它接受两位数的日期,但模式为 pattern="dd.MM.yyyy"设置。赞 20.06.12将在日历弹出窗口中显示为 20.06.2012误导用户认为日期被正确识别。但12年实际上已定。

无论如何,我最终设置了一个 <f:validator><p:calendar>像这样:

<p:calendar value="#{abschnittDView.bogen.pruefungsDatum}
mode="popup" locale="de" pattern="dd.MM.yyyy" required="true"
requiredMessage="Please provide a date."
converterMessage="Date is invalid.">

<f:convertDateTime type="date" pattern="dd.MM.yyyy"
timeZone="Europe/Berlin" locale="de" />

<f:validator validatorId="de.common.DateValidator" />

</p:calendar>

然后在给定的日期做一些验证:
@FacesValidator(DateValidator.VALIDATOR_ID)
public class DateValidator implements Validator {

public static final String VALIDATOR_ID = "de.common.DateValidator";

@Override
public void validate(FacesContext facesContext, UIComponent component,
Object value) throws ValidatorException {

Date inputDate = (Date) value;
Calendar cal = Calendar.getInstance();
cal.setTime(inputDate);
if (cal.get(Calendar.YEAR) < 1000) {
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Please provide a date with 4 digits for the year", null));
}
}

我知道这可以防止日期低于 1​​000,但就我而言,绝对清楚日期​​不能低于 2000。

所以建议是:使用 Validator以确保日期正确。
我知道这不是完美的解决方案,但也许是一种可能的解决方法。

否则,请尝试在 primefaces 论坛上询问此问题。

关于date - Primefaces 日历允许无效日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11045965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com