Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自定义大小注释上的Java验证消息_Java_Spring_Validation_Size - Fatal编程技术网

自定义大小注释上的Java验证消息

自定义大小注释上的Java验证消息,java,spring,validation,size,Java,Spring,Validation,Size,我有一个简单的实体类,它表示数据库中的一个表。这个类有两个属性,我在这两个属性上都有一个大小注释,如图所示 public class ExecutionStepOption extends AbstractDomainObject implements Nameable { private static final long serialVersionUID = 4249454967446069549L; @NotNull @Size(min = 1, max = 100) @Column(

我有一个简单的实体类,它表示数据库中的一个表。这个类有两个属性,我在这两个属性上都有一个大小注释,如图所示

public class ExecutionStepOption extends AbstractDomainObject implements Nameable {

private static final long serialVersionUID = 4249454967446069549L;

@NotNull
@Size(min = 1, max = 100)
@Column(name = "name")
private String name;

@NotNull
@Size(min = 1, max = 10)
@Column(name = "value")
private String value;
在HTML方面,我有一个表单,它有两个文本框,它们接受名称和值。当用户输入一个大于10个字符的值时,我想显示一条自定义消息,如“value大于10个字符”

我试过这个

@NotNull
@Size(min = 1, max = 10, message = "Size cannot be greater than 10 Characters")
@Column(name = "value")
private String value;
但似乎不起作用。我仍然收到丑陋的Java消息

Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while committing the transaction
堆栈跟踪

javax.validation.ConstraintViolationException: Validation failed for classes [org.misoenergy.darr.domain.ExecutionStepOption] during persist time for groups [javax.validation.groups.Default, ]
约束冲突列表:[ ConstraintViolationImpl{interpolatedMessage='Size不能大于10个字符',propertyPath=value,rootBeanClass=class org.misoenergy.darr.domain.ExecutionStepOption,messageTemplate='Size不能大于10个字符'} ] 在org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:160)~[hibernate-core-4.3.7.Final.jar:4.3.7.Final] 在org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:95)~[hibernate-core-4.3.7.Final.jar:4.3.7.Final] 在org.hibernate.action.internal.EntityInsertAction.preInsert(EntityInsertAction.java:218)~[hibernate-core-4.3.7.Final.jar:4.3.7.Final] 在org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:97)~[hibernate-core-4.3.7.Final.jar:4.3.7.Final] 在org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:463)~[hibernate-core-4.3.7.Final.jar:4.3.7.Final] 在org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:349)~[hibernate-core-4.3.7.Final.jar:4.3.7.Final] 在org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:350)~[hibernate-core-4.3.7.Final.jar:4.3.7.Final] 在org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56)~[hibernate-core-4.3.7.Final.jar:4.3.7.Final] 在org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1222)~[hibernate-core-4.3.7.Final.jar:4.3.7.Final] 在org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:425)~[hibernate-core-4.3.7.Final.jar:4.3.7.Final] 在org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)~[hibernate-core-4.3.7.Final.jar:4.3.7.Final] 在org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:177)~[hibernate-core-4.3.7.Final.jar:4.3.7.Final] 在org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:77)~[hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final] 在org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:517)~[spring-orm-4.0.8.RELEASE.jar:4.0.8.RELEASE] 在org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:757)~[spring-tx-4.0.8.RELEASE.jar:4.0.8.RELEASE] 在org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:726)~[spring-tx-4.0.8.RELEASE.jar:4.0.8.RELEASE] at sun.reflect.GeneratedMethodAccessor421.invoke(未知源)~[na:na] 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)~[na:1.7.060] 在java.lang.reflect.Method.invoke(Method.java:606)~[na:1.7.0\u 60] 在org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)~[spring-aop-4.0.8.RELEASE.jar:4.0.8.RELEASE] 在org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)~[spring-aop-4.0.8.RELEASE.jar:4.0.8.RELEASE] 在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:157)~[spring-aop-4.0.8.RELEASE.jar:4.0.8.RELEASE] 在org.springframework.batch.core.configuration.annotation.SimpleBatchConfiguration$PassthruAdvice.invoke(SimpleBatchConfiguration.java:127)~[spring-batch-core-3.0.2.RELEASE.jar:3.0.2.RELEASE] 在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:179)~[spring-aop-4.0.8.RELEASE.jar:4.0.8.RELEASE] 在org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)~[spring-aop-4.0.8.RELEASE.jar:4.0.8.RELEASE] 在com.sun.proxy.$Proxy143.commit(未知源)~[na:na] 在org.springframework.transaction.interceptor.TransactionSpectSupport.commitTransactionAfterReturning(transactionSpectSupport.java:478)~[spring-tx-4.0.8.RELEASE.jar:4.0.8.RELEASE] 在org.springframework.transaction.interceptor.TransactionSpectSupport.invokeWithinTransaction(TransactionSpectSupport.java:272)~[spring-tx-4.0.8.RELEASE.jar:4.0.8.RELEASE] 在org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)~[spring-tx-4.0.8.RELEASE.jar:4.0.8.RELEASE] 在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:179)~[spring-aop-4.0.8.RELEASE.jar:4.0.8.RELEASE] 在com.ryanteney.metrics.spring.TimedMethodInterceptor.invoke(TimedMethodInterceptor.java:48)~[metrics-spring-3.0.2.jar:na] 在com.ryanteney.metrics.spring.TimedMethodInterceptor.invoke(TimedMethodInterceptor.java:34)~[metrics-spring-3.0.2.jar:na] 在com.ryanteney.metrics.spring.AbstractMetricMethodInterceptor.invoke(AbstractMetricMethodInterceptor.java:59)~[metrics-spring-3.0.2.jar:na] 在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:179)~[spring-aop-4.0.8.RELEASE.jar:4.0.8.RELEASE] 在org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644)~[spring-aop-4.0.8.RELEASE.jar:4.0.8.RELEASE] 位于org.misoenergy.darr.service.ExecutionService$$EnhancerBySpringCGLIB$$67c
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;

import javax.validation.ConstraintViolationException;

@ControllerAdvice
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(value = { ConstraintViolationException.class})
    protected ResponseEntity<Object> handleNotAuthenticated(RuntimeException ex, WebRequest request) {

        // String message =  extract violation message from exception

        return handleExceptionInternal(ex, message, 
          new HttpHeaders(), HttpStatus.NOT_ACCEPTABLE, request);
    }

}
@RequestMapping(value = "/stepoption", method = RequestMethod.POST)
public String setOption(@Valid ExecutionStepOption  stepoption) {

        return "whatever";

}
@ExceptionHandler(value = { ConstraintViolationException.class})
    @ResponseBody 
    ResponseEntity<Object> handleNotAuthenticated(RuntimeException ex, WebRequest request) {
        return new ResponseEntity<Object>(new Basis(ex.getMessage()), HttpStatus.NOT_ACCEPTABLE);
    }