java - spring mvc javax.validation.UnexpectedTypeException : No validator could be found for type: java. lang.String

标签 java spring validation spring-mvc hibernate-validator

我第一次尝试在 Spring MVC 中使用 validator ,但总是遇到异常:

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)

这是我带注释的验证类:

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 ...

以及带有注释@valid的 Controller :

@RequestMapping(value = "/saveNew", method = RequestMethod.POST)  
    public ModelAndView saveNewEmploye(@ModelAttribute("command") @Valid AbstractEmployeDto employe,   
       BindingResult result) { 
        Map<String, Object> model = new HashMap<String, Object>();
        if(result.hasErrors()){
            return new ModelAndView("/employes/add.html", model);  
        }
...

最佳答案

@Past@DateTimeFormat 必须在 DateCalendar 上使用 不是字符串。正如 bean 验证文档所说:

The annotated element must be a date in the past. Now is defined as the current time according to the virtual machine. The calendar used if the compared type is of type Calendar is the calendar based on the current timezone and the current locale.

Supported types are:
java.util.Date
java.util.Calendar
null elements are considered valid.

也许你需要使用这样的东西:

@DateTimeFormat(pattern="dd/MM/yyyy")
@Past
private Date dateNaissance

关于java - spring mvc javax.validation.UnexpectedTypeException : No validator could be found for type: java. lang.String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30795851/

相关文章:

java - 使用当前年份的 JPA/Hibernate 主键值序列

javascript - 确认 html 表单字段的最佳方法是什么?

java - MySql - 获取行数是否= 0

java - 在 google app engine/Gwt 中无限运行一个方法

java - Spring Jersey : How to get rid of web. xml?

c# - 使用 Validator 时忽略 .NET 4 RTM MetadataType 属性

使用单选按钮和数组进行 Javascript 测试

java - ByteArrayOutputStream(int size) 中的缓冲区到底是什么?

java - 在 Graphite 服务器中 - Actuator/metrics/http.server.requests 计数未更新

multithreading - 当监听器线程终止时,如何在不重新启动服务器的情况下获得与服务器丢失的连接