如何验证日历中的日期

2024-03-10

我已尝试使用以下代码(我已遵循示例)来测试从日历中选择的日期。如果我的数据库中不存在该日期,则应向最终用户显示验证错误消息。然而,错误并没有以<h:message>,而是将其记录到服务器日志中。

View:

<p:calendar id="date1" value="#{bean.date1}" showOn="button"> 
    <f:validator validatorId="calendarValidator" />
    <f:ajax execute="date1" render="calendarmessage" />
</p:calendar>
<h:message id="calendarmessage" for="date1" />

验证器:

@FacesValidator("calendarValidator")
public class CalendarValidator implements Validator{

    @Override  
    public void validate(FacesContext context, UIComponent component, Object value) {
        java.util.Date date2 = (java.util.Date) value;

        try {
            if (validateDate(date2)) {
                throw new ValidatorException(new FacesMessage("A valid date"));
            } else {
                throw new ValidatorException(new FacesMessage("date dont figure in the database"));
            } 
        } catch(Exception e) {
            e.printStackTrace();
        }   
    }
}

服务器日志:

INFO: date invalide
GRAVE: javax.faces.validator.ValidatorException: date dont figure in the database
at DAOKPI.CalendarValidator.validate(CalendarValidator.java:60)
at javax.faces.component.UIInput.validateValue(UIInput.java:1149)
at javax.faces.component.UIInput.validate(UIInput.java:967)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1233)
at javax.faces.component.UIInput.processValidators(UIInput.java:698)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIForm.processValidators(UIForm.java:253)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1172)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1

再次查看您的代码,您正在捕获并打印ValidatorException自己在验证器里面!您不应该捕获并记录ValidatorException你自己。您应该放开它,让 JSF 捕获并处理它,以便它可以相应地在消息组件中显示它。

Get rid of the try阻止验证器并添加throws条款至validate() method.

@Override  
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
    java.util.Date date2 = (java.util.Date) value;

    if (validateDate(date2)) {
        throw new ValidatorException(new FacesMessage("A valid date")); // Btw: I wonder how that makes sense... That's actually not a validation error.
    } else {
        throw new ValidatorException(new FacesMessage("date dont figure in the database"));
    } 
}   
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何验证日历中的日期 的相关文章

随机推荐

  • jQuery masonry 如何调用layoutComplete

    我有以下功能 namespace utils pageReorder feed function console log complete do some stuff here no reorder has completed pageRe
  • 使用 CSS 旋转元素后使用高度/宽度 100%

    我有一个想要旋转的元素 视频 然后使用 100 宽度和高度 在应用旋转之前 视频占据 100 的宽度和高度 旋转后 尺寸似乎与旋转之前保持相同 我想重新应用宽度和高度 100 以使视频适应新状态 目标是尝试以横向方式呈现视频 即使 div
  • 如何绘制 Wolfram Alpha 网格? [MATLAB]

    我想绘制这个网格的任何函数 这是 f z gt 1 z 的特殊情况 这是您可以在 Wolfram alpha 上找到的典型图表 尽管如此 我不知道如何继续 这个想法是看看应用 f 后 1 平方的复杂网格的线被发送到哪里 一件很棒的事情是在网
  • bash 脚本中查找函数的结果出现问题

    我的 bash 脚本有问题 我的 for 函数使用 find 函数的结果 长话短说 在 SSH 中 find 函数返回 2 个结果 而在 bash 脚本中返回单个结果 我尝试了以下两个代码 for f in find path name p
  • 在 URL 查询字符串中使用方括号的数组语法是否有效?

    在 URL 查询字符串中使用多维数组语法实际上安全 有效吗 http example com abc 123 abc 456 它似乎适用于每个浏览器 我一直认为它可以使用 但根据本文中的评论 事实并非如此 http www 456berea
  • GetWindowRect 坐标不与屏幕相关

    我正在使用 Visual Studio 2008 C 工作 我有一个 MFC 对话框 里面有一个控件 我正在尝试在控件中放置另一个对话框 第二个对话框上的 SetWindowPos 显然使用屏幕坐标 因此我需要获取控件或父对话框的屏幕坐标
  • 被指令包装后,我如何访问它的范围?

    如何在指令主体中访问指令的隔离范围 我的 DOM 看起来像这样 div div
  • UICollectionView 中的单元格间距

    如何设置某个部分的单元格间距UICollectionView 我知道有一个房产minimumInteritemSpacing我已经将其设置为 5 0 但间距并未出现 5 0 我已经实现了流出委托方法 CGFloat collectionVi
  • 如何在 PHP 中将 UTF-16 十六进制字符串转换为 UTF-8?

    我有来自 strace 的以下输出 我想使用 PHP 将其转换为 UTF 8 R 00f6dhakev 00e4gen 4 R 00e4ntm 00e4starv 00e4gen 24 K 00d8BENHAVN 我认为上面的字符串是 UT
  • 尝试使用列表迭代器删除对象

    我正在尝试使用列表迭代器从列表中删除对象 我已经浏览了网站上的其他解决方案 但没有一个解决方案可以缓解错误 线程 main java util ConcurrentModificationException 中的异常 这是我未执行的代码 v
  • 如何使用rxjava获取retrofit 2.0中的请求url?

    我正在尝试升级到 Retrofit 2 0 并在我的 android 项目中添加 RxJava 我正在进行 api 调用 并希望检索 url 及其以及 sqlite 中的响应数据作为缓存 Observable
  • 如何在Windows上使用JPL(双向Java/Prolog接口)?

    我对在 Java 中嵌入 Prolog 解释器感兴趣 一种选择是使用JPL http www swi prolog org packages jpl java api index html 但是 JPL 网站上的下载链接已损坏 并且安装页面
  • 从本地源安装 anaconda 库

    一段时间以来 我一直尝试在非常复杂的代理后面的 Windows PC 上安装 pymc 有效地使其安装在未连接到互联网的计算机上 我尝试在 condarc 文件中设置代理但未成功 但仍然收到错误消息 conda安装 chttps conda
  • C# - List 初始容量的用途是什么? [复制]

    这个问题在这里已经有答案了 我正在尝试执行以下操作 int count 50 List
  • 如果用户在特定页面上则显示部分

    如果我有一个包含以下 URL 的页面 http www mywebsite com users profile edit http www mywebsite com users profile edit 仅当用户位于该特定页面上时 如何显
  • 当每个函数返回 deferred.promise 时,如何链接函数数组的执行?

    我已经使用 deferred 模块在 Node js 中创建了我的第一个延迟对象 当我将结果传递给下一个函数并触发解析和拒绝时 它效果很好 当每个函数返回 deferred promise 时 如何链接函数数组的执行 我有类似函数的输入参数
  • Type.GetType(string) 应该了解动态生成的类型吗?

    我有一个使用 CodeDom 编译器创建一些代码的应用程序 我可以看到生成的程序集在内存中 但是当我调用 Type GetType typeName 时 它返回 null 我觉得这有点令人困惑 我究竟做错了什么 static void Ma
  • 如何检测 iPhone 正面朝上放在桌子上时是否正在旋转?

    有没有办法检测面朝上放在桌子上的 iPhone 是否正在旋转 我确实意识到这种运动不会由加速度计报告 也不会报告给 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrienta
  • 将已发送的彩信插入发送箱

    我正在尝试将彩信插入发送的数据库中 但可惜我无法在本机 Android 应用程序中查看它 我的插入代码 ContentValues values new ContentValues values put thread id thread i
  • 如何验证日历中的日期

    我已尝试使用以下代码 我已遵循示例 来测试从日历中选择的日期 如果我的数据库中不存在该日期 则应向最终用户显示验证错误消息 然而 错误并没有以