JSF:如何通过 bean 验证来验证字段并返回错误消息?

2024-05-04

我有一个联系表单,并且有一些通过 Bean 验证进行验证的字段,提交后如何返回 Bean 验证错误消息?

例如:

<h:form>
    <h:inputText id="name" value="#{contact.client.name}"></h:inputText>Name (Required)
    <h:inputText id="email" value="#{contact.client.email}"></h:inputText>E-Mail (Required)
    <h:inputText id="website" value="#{contact.client.website}"></h:inputText>Website (Optional)
    <h:inputText id="text" value="#{contact.client.text}"></h:inputText>Message (Required):

    <h:commandButton value="Send" action="#{contact.sendMessage}" >
        <f:ajax execute="@form" render="@form"/>
    </h:commandButton>

</h:form>

这就是我验证字段的方式:

        // Client.java (model)
    @NotNull(message="Please provide your name")
    private String name;

    @NotNull(message="Please provide your email")
    @Pattern(regexp = "([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)", message = "Invalid e-mail")
    private String email;

    @Pattern(regexp = "(http[s]?://|ftp://)?(www\\.)?[a-zA-Z0-9-\\.]+\\.([a-zA-Z]{2,5})$", message = "Not valid URL")
    private String website;

    @NotNull(message="Please provide your message")
    private String text;

要么使用<h:message> http://download.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/facelets/h/message.html您可以通过以下方式将其附加到特定组件for应该引用的属性id输入组件的:

<h:inputText id="name" value="#{contact.client.name}"></h:inputText>Name (Required)
<h:message for="name" />
<h:inputText id="email" value="#{contact.client.email}"></h:inputText>E-Mail (Required)
<h:message for="email" />
<h:inputText id="website" value="#{contact.client.website}"></h:inputText>Website (Optional)
<h:message for="website" />
<h:inputText id="text" value="#{contact.client.text}"></h:inputText>Message (Required):
<h:message for="text" />

or use <h:messages/> http://download.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/facelets/h/messages.html将它们全部显示在一个地方:

<h:messages />

是的,bean 验证消息也在那里结束。

不要忘记确保按钮的render属性也涵盖了它们。

也可以看看:

  • 使用 Glassfish 和 Eclipse 的 JSF 2.0 教程 - Hello World - 视图 http://balusc.blogspot.com/2011/01/jsf-20-tutorial-with-eclipse-and.html#CreateJSFHelloWorldInEclipseTheView
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSF:如何通过 bean 验证来验证字段并返回错误消息? 的相关文章

随机推荐

  • $(this) 和 this 有什么区别?

    有人可以解释一下 它们之间有什么区别吗 例如我可以用 that 来做到这一点 var bar button click function if bar this alert same bar this 并且不能使用 that var bar
  • 在 Netlogo 中将函数作为参数传递

    在许多其他编程语言中 您可以将一个函数作为参数传递给另一个函数并从该函数内调用它 无论如何 在 Netlogo 中可以做到这一点吗 比如下面这样 x y z are all ints to report f x y z report x y
  • 在 Python 中计算时间(datetime.timedelta?)

    我相信这对很多人来说都是理所当然的事情 但我发现自己对整个 datetime timedelta 事情感到非常困惑 本质上我在开始时给一些东西加上时间戳startTime然后我为流程结束添加时间戳endTime我试图找出 HH MM SS
  • 制作一个未知大小的数组 C# [重复]

    这个问题在这里已经有答案了 可能的重复 C 中未知长度的数组 https stackoverflow com questions 599369 array of an unknown length in c sharp 我想创建一个程序 用
  • 如何更改 UIImage 的颜色? [复制]

    这个问题在这里已经有答案了 我不想改变图像的背景颜色 而是改变整个图像的颜色 但问题是 我只能改变backgroundColor 接受的答案是正确的 但还有更多easy way for UIImageView Obj C UIImage i
  • AngularJs 位置路径更改,无需重置所有控制器

    我的问题的简短版本是 如何更改 URL 而不需要触发路由更改或不需要运行当前显示页面上的所有控制器 Details 我有一个模板 显示在
  • Android 电子邮件意图和消息正文

    我正在使用意图从我的应用程序启动电子邮件应用程序 我使用意图设置主题 短信和电子邮件地址 除了电子邮件部分中的光标位置之外 一切正常 我的电子邮件信息类似于 感谢您选择 不要写在这条线下面 我在电子邮件正文中看到该消息 但我的光标在 请勿写
  • 索引 getter 中的 IndexOutOfRangeException

    在我的索引属性中 我检查索引是否超出范围 如果是的话 我抛出一个IndexOutOfBoundsException 当我运行代码分析器 在 VS12 中 时 它抱怨 CA1065 意外位置出现意外异常 参考CA1065的描述 仅 Syste
  • 如何使用 Gnuplot 在一个图中绘制代表数据集中多个子集行的多个图表?

    我有一个数据集 其名称为 output txt 格式如下 1 2 4 6 7 10 1 2 5 6 7 1 3 4 6 7 10 2 4 6 7
  • 使用 python 突出显示图像中的特定文本

    我想突出显示网站屏幕截图中的特定单词 句子 截取屏幕截图后 我使用提取文本pytesseract and cv2 效果很好 我可以获得有关它的文本和数据 import pytesseract import cv2 if name main
  • 嵌入式 Jetty 无法识别 Spring MVC Security

    我正在开发一个启动嵌入式 Jetty 服务器的 Spring 应用程序 然后 它将 Spring MVC Web 应用程序 部署 到该 Jetty 服务器 多个控制器都运行良好 但我无法将 Spring Security 添加到 Web 应
  • C# StreamReader 使用分隔符保存到数组

    我有一个文本文件 其中包含制表符分隔的数据 我在 C 应用程序中需要的是从文本文件中读取一行并将它们保存到一个数组中 在每个位置将它们分开 t 然后我对下一行做同样的事情 My code StreamReader sr new Stream
  • 为什么 float() 会截掉尾随零?

    该代码成功地将一个包含许多数字的大文件裁剪为几个包含数字的较小文本文件 但它产生了一个有趣的怪癖 所有数字都应精确到小数点后四位 例如 2 7400 但它们打印为 2 74 这是文件的片段 0 96 0 53 0 70 0 53 0 88
  • 在 C 中打印字符串的所有排列

    我正在学习回溯和递归 并且我陷入了打印字符串所有排列的算法 我用以下方法解决了它贝尔算法 http programminggeeks com bell algorithm for permutation 用于排列 但我无法理解递归方法 我在
  • mysql 查询从给定的表结构创建 SEO 友好的 url

    我正在尝试使用下表创建 SEO 友好的 URL 类别表 http sqlfiddle com 2 c474a 4 页表 http sqlfiddle com 2 c474a 5 我正在尝试编写一个 mysql 查询 该查询将使用产生以下输出
  • 如何获取firestore集合下的文档数量? [复制]

    这个问题在这里已经有答案了 我想获取 firestore 集合中的文档总数 我正在制作一个论坛应用程序 所以我想显示每个讨论中当前的评论量 有类似的东西db collection comments get lenght或类似的东西 随着si
  • ConcurrentLinkedDeque 与 LinkedBlockingDeque

    我需要一个线程安全的 LIFO 结构 并发现我可以使用线程安全的实现Deque为了这 Java 7 引入了ConcurrentLinkedDeque http docs oracle com javase 7 docs api java u
  • Grails 2.3 IntegrationSpec 不能为事务性 false

    我最近升级到 Grails 2 3 并尝试将所有旧测试迁移到 spock 集成测试 但它在清理时失败了 因为我的测试是非事务性的 Grails 文档说测试可以是非事务性的 但我们需要手动处理它 但在这里似乎不太正确 因为我在扩展 Integ
  • Linux 上的 wall-time 分析

    我有一个应用程序 我想分析在各种活动中花费了多少时间 由于此应用程序是 I O 密集型 因此我希望获得一份报告 该报告将总结每个库 系统调用所花费的时间 挂起时间 我已经尝试过 oprofile 但它似乎给出了 Unhalted CPU 周
  • JSF:如何通过 bean 验证来验证字段并返回错误消息?

    我有一个联系表单 并且有一些通过 Bean 验证进行验证的字段 提交后如何返回 Bean 验证错误消息 例如