javax.validation.ConstraintViolationException - 空输入错误

时间:2015-11-15 17:22:17

标签: java hibernate validation

我的项目有问题。我想验证输入值。

在没有输入任何数据的情况下提交表单时,我收到以下异常:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [com.springapp.mvc.models.UsersEntity] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
    ConstraintViolationImpl{interpolatedMessage='nemůže být prázdný/á/é', propertyPath=name, rootBeanClass=class com.springapp.mvc.models.UsersEntity, messageTemplate='{org.hibernate.validator.constraints.NotEmpty.message}'}
    ConstraintViolationImpl{interpolatedMessage='nemůže být prázdný/á/é', propertyPath=name, rootBeanClass=class com.springapp.mvc.models.UsersEntity, messageTemplate='{org.hibernate.validator.constraints.NotBlank.message}'}
]
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

javax.validation.ConstraintViolationException: Validation failed for classes [com.springapp.mvc.models.UsersEntity] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
    ConstraintViolationImpl{interpolatedMessage='nemůže být prázdný/á/é', propertyPath=name, rootBeanClass=class com.springapp.mvc.models.UsersEntity, messageTemplate='{org.hibernate.validator.constraints.NotEmpty.message}'}
    ConstraintViolationImpl{interpolatedMessage='nemůže být prázdný/á/é', propertyPath=name, rootBeanClass=class com.springapp.mvc.models.UsersEntity, messageTemplate='{org.hibernate.validator.constraints.NotBlank.message}'}
]
    org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:159)
    org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:94)
    org.hibernate.action.internal.EntityInsertAction.preInsert(EntityInsertAction.java:181)
    org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:81)
    org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:377)
    org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:369)
    org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:286)
    org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:339)
    org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)
    org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1234)
    org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404)
    org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
    org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
    com.springapp.mvc.dao.UserDaoImpl.saveOrUpdate(UserDaoImpl.java:79)
    com.springapp.mvc.dao.ServiceUserDaoImpl.saveOrUpdate(ServiceUserDaoImpl.java:45)
    com.springapp.mvc.dao.WebController.saveOrUpdateUser(WebController.java:88)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:497)
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175)
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446)
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

我的jsp文件:

  <form:form class="form-horizontal" method="post" modelAttribute="user" action="${userUpdateOrSave}">

    <form:hidden path="id" />

    <spring:bind path="name">
      <div class="form-group ${status.error ? 'has-error' : ''}">
        <label class="col-sm-2 control-label">Name</label>
        <div class="col-sm-10">
          <form:input path="name" type="text" class="form-control " id="name" placeholder="Name" />
          <form:errors path="name" class="control-label" />
        </div>
      </div>
    </spring:bind>

    <div class="form-group">
      <div class="col-sm-offset-2 col-sm-10">
            <button type="submit" class="btn-lg btn-primary pull-right">OK</button>
      </div>
    </div>
  </form:form>

UserEntity:

@Entity
@Table(name = "USERS", schema = "KK", catalog = "")
public class UsersEntity {
    private int id;
    private String name;

    @Id
    @NotNull
    @Column(name = "ID")
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Basic
    @NotBlank
    @NotEmpty
    @Column(name = "NAME")
    public String getName() {
        return name;
    }

这是如何引起的,现在可以解决它?

0 个答案:

没有答案