我尝试使用Spring MVC第一次使用验证器,我总是得到例外:
<nav>
<ul>
<li><a href="#">Menu 1</a></li>
<li><a href="#">Menu 2</a></li>
<li><a href="#" class="logo">Logo</a></li>
<li><a href="#">Menu 3</a></li>
<li><a href="#">Menu 4</a></li>
</ul>
</nav>
这是我的用于验证的注释类:
javax.validation.UnexpectedTypeException: No validator could be found for type: java.lang.String
at org.hibernate.validator.engine.ConstraintTree.verifyResolveWasUnique(ConstraintTree.java:236)
at org.hibernate.validator.engine.ConstraintTree.findMatchingValidatorClass(ConstraintTree.java:219)
at org.hibernate.validator.engine.ConstraintTree.getInitializedValidator(ConstraintTree.java:167)
at org.hibernate.validator.engine.ConstraintTree.validateConstraints(ConstraintTree.java:113)
at org.hibernate.validator.metadata.MetaConstraint.validateConstraint(MetaConstraint.java:121)
at org.hibernate.validator.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:334)
带有注释@valid:
的控制器public class AbstractEmployeDto implements Employable, Comparable<AbstractEmployeDto> {
private Set<AbstractClientDto> listeClients = new TreeSet<AbstractClientDto>();
private Long id;
@NotEmpty
private String nom;
@NotEmpty
private String prenom;
@DateTimeFormat(pattern="dd/MM/yyyy")
@Past
private String dateNaissance;
@Size(min=10)
private String telephone;
@Email
private String email;
private TypeEmploye typePersonne;
private String rue;
@Size(min=4, max=4)
private String npa;
getter and setter ...
答案 0 :(得分:1)
@Past
或@DateTimeFormat
上使用 Date
和Calendar
不是String
。正如bean验证文档所说:
带注释的元素必须是过去的日期。现在被定义为 根据虚拟机的当前时间。使用的日历 如果比较类型是类型日历是基于日历的日历 当前时区和当前区域设置。
支持的类型有:
java.util.Date
java.util.Calendar
null 元素被认为是有效的。
你可能需要使用像这样的东西:
@DateTimeFormat(pattern="dd/MM/yyyy")
@Past
private Date dateNaissance