- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的 JSF 托管 bean 中使用 Hibernate 验证注释。当我使用 @NotNull
、@NotBlank
或 @NotEmpty
时,它们似乎没有以任何方式被触发。
@NotBlank(message = "{name.required}")
public String name;
查看:
<h:outputLabel value="Name:" />
<h:inputText id="name" value="#{person.name}" size="20" />
<h:message for="name" style="color:red" />
这是怎么引起的,我该如何解决?
最佳答案
由于您没有就我使用的容器问题的评论提供任何反馈,我浏览了您的问题历史记录以了解您都在使用哪些容器。到目前为止我只找到Tomcat .因此,对于这个答案,我假设您确实在使用 Tomcat,正如我最初在发表评论时猜测的那样。
Tomcat 不附带任何开箱即用的 JSR303 Bean 验证 API/实现。你需要 download and install它自己。你得到了这些注释来编译意味着你已经正确地删除了 hibernate-validator.jar
/WEB-INF/lib
中的文件(命名可能因版本而异)您的网络应用程序的文件夹。这些注释反过来似乎并没有以任何方式起作用只能意味着您没有阅读 readme.txt
和/或忘记从 /lib/required
添加 JAR Hibernate Validator 库 zip/tgz 文件的文件夹:slf4j-api.jar
和 validation-api.jar
.最后一个是强制性的,以便使注释真正起作用。因此,要让 Hibernate Validator 在 Tomcat 中工作,您需要在 webapp 的 /WEB-INF/lib
中包含以下 JAR。 :
validation-api.jar
(包含抽象 API 和注释扫描器)hibernate-validator.jar
(包含具体实现)slf4j-api.jar
(只是为了让它的记录器也能正常工作)这边 @NotBlank
和 @NotEmpty
必须工作。 @NotNull
值得特别关注;由于 HTTP 请求参数的性质,空输入字段默认从客户端(网络浏览器)接收为空字符串。空字符串与 null
不同, 所以 @NotNull
默认情况下永远不会启动。然而,JSF 可以配置为将它们解释为 null
只需将以下上下文参数添加到 web.xml
:
<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
</context-param>
这边 @NotNull
也必须有效。
如果它仍然不起作用(即 3 个注释都不起作用,但其他像 @Size(min=5)
的最小长度为 5 可以正常工作),那么您很可能已经web.xml
中的以下上下文参数还有:
<context-param>
<param-name>javax.faces.VALIDATE_EMPTY_FIELDS</param-name>
<param-value>false</param-value>
</context-param>
然后您应该将其删除(默认为 auto
,即仅当在运行时类路径中找到 JSR303 Bean Validation API 时)或将其设置为 true
.
当 BV 实际上没有任何作用时,也没有 @Size
, @Pattern
等,那么您应该验证您的表单中是否不具有以下内容:
<f:validateBean disabled="true" />
然后你应该删除它(默认情况下它会启动)或设置 disabled="false"
.
当 BV 仍然 不起作用时,请验证您是否使用的不是 2.2.3 和 2.2.6 之间的旧 Mojarra 版本。这些版本有一个类加载委托(delegate)错误,导致 Tomcat 和克隆上的 Bean 验证完全不可见。这被报告为 Mojarra issue 3183并在 Mojarra 2.2.7 中修复。
关于jsf - Bean 验证@NotNull、@NotBlank 和@NotEmpty 在 JSF+Tomcat 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7545231/
我在变量上使用了@NotEmpty( hibernate validator )注释。创建了 messages.properties 文件,我在其中使用“AnnotationName.objectNa
在网上搜索的内容,大致如下: 验证框中@NotEmpty、@NotBlank、@NotNull乍一看还是容易弄混的。主要使用情况记录一下: @NotEmpty 用在集合类上面 @NotBlank
我一直在尝试制作自定义 validator ,因此我可以只对特定类(在本例中为 java.util.Calendar 或 CommandItem)使用 @NotEmpty 注释。但我得到一个异常(ex
例如,FluentValidation 验证用户输入的空电子邮件地址。 我链接了两个函数,但它跳过了 .NotEmpty().WithMessage() 并跳转到下一个 EmailAddress().
这里是 CakePHP 的新手 - 我正在浏览站点上的文档,试图为我正在创建的模型收集一些基本数据验证。这可能是我对 CakePHP 提出的许多问题中的第一个。 在CakePHP Book ,验证规则
我正在使用 5.2.13.Final hibernate-core 的版本和5.2.13.最终版本hibernate-validator . @NotEmpty @Column(name = "SSO
我正在使用 Spring Boot 。 import javax.validation.constraints.NotEmpty; import javax.validation.constraint
我是蛋糕的新手,完成了博客教程,现在我正在尝试一些简单的开始。但是我有一些我无法理解的东西。在模型 PersonalInformation 上,我得到了表字段的数据验证: 这是我的带有 $valida
我们必须删除代码中使用的几乎所有框架。我已开始使用来自 Hibernate 的 @NotEmpty。这是唯一使用的类 hibernate ,我们认为这是唾手可得的成果。 我写了下面的实现: impor
我正在使用 Hibernate Validation 注释 @NotEmpty 有没有办法让表单的所有字段都@NotEmpty,这意味着我不需要在所有字段之上编写@NotEmpty。 如果可能的话,如
看起来 Hibernate NotEmpty 注释不会导致用空格填充的字符串 ("") 的错误。仅适用于 null 或空字符串(即:new String())。是否有解决方法/修复方法? 最佳答案 @
我有以下代码: public class NewsEditViewDataValidator : AbstractValidator { public NewsEditViewDataVal
我在使用 Hibernate Validator 4.3.1 时遇到问题。 问题是, validator 正在验证字段是否为空且没有 @NotEmpty 注释。 当提交了某人的网络表单并且未设置地址、
我需要对一个字段进行条件验证:if other_field = 1然后 this_field = notBlank .我找不到办法做到这一点。 我在表类中的验证器: public functi
我正在学习 Spring 3,我正在尝试使用 org.hibernate.validator.constraints.NotEmpty 类来验证表单。 例如,我能够覆盖 @Size 消息 (javax
当属性具有 NotEmpty 规则时,我想在 Asp.Net MVC 4 网页上显示一个带星号的 label。 最佳答案 只需将此函数添加到您的常用脚本函数中并在加载时运行 $(document).r
我看过其他questions/用谷歌搜索这个。我的问题是,当我提交带有空文本框且具有 notEmpty 验证器的表单时,它不会触发任何错误。 首先,我想看看我是否理解notEmpty 和setRequ
我有一个根据需要设置的表单元素: $this->addElement('text', 'email', array( 'label' => 'Email address:',
我在登录表单中使用 FluentValidation。电子邮件地址字段是 必需 并且必须是有效的电子邮件地址。 我想在这两种情况下都显示自定义错误消息。 我的代码是: RuleFor(customer
最初在为字符串编写验证逻辑时,我决定对任何需要的字符串使用 NotEmpty。使用 .NotEmpty().Length(min, max) 时,这将导致在传入空字符串时返回两个错误,而不是仅返回一个
我是一名优秀的程序员,十分优秀!