java - 春季提交部分表单
问题描述
在我的 Spring 应用程序中,我必须提供另存为草稿功能。但由于实体验证规则,我无法提交部分表单。我只想在单击“保存最终”按钮时验证表单,而不是在单击“保存草稿”按钮时验证表单。我尝试删除 @Valid 注释,但仍然收到 javax.validation.ConstraintViolationException 错误。
控制器:
@PostMapping("/saveSalesDetails")
public String saveSales(Sales sales, @RequestParam("action") String formAction, BindingResult result, Model model) {
if(formAction.equalsIgnoreCase("Save Draft")) {
}
else if (formAction.equalsIgnoreCase("Save Final") {
}
这是堆栈跟踪:
Caused by: javax.validation.ConstraintViolationException: Validation failed for classes [mip.salesproj.model.Sales] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage='Target Of Sale should be between 5-20 characters', propertyPath=targetSale, rootBeanClass=class mip.salesproj.model.Sales, messageTemplate='Target Of Sale should be between 5-20 characters'}
ConstraintViolationImpl{interpolatedMessage='Target Of Sale field should not be blank', propertyPath=targetSale, rootBeanClass=class mip.salesproj.model.Sales, messageTemplate='Target Of Sale field should not be blank'}
]
at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:140)
at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:80)
at org.hibernate.action.internal.EntityInsertAction.preInsert(EntityInsertAction.java:205)
at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:82)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:600)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:474)
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1437)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:494)
at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3245)
at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2451)
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:473)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:156)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$100(JdbcResourceLocalTransactionCoordinatorImpl.java:38)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:231)
at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:68)
... 107 common frames omitted
解决方案
推荐阅读
- java - 比较 2 个不同用户在 Android/Firebase 中的时间戳
- unix - 如何从 kornshell 脚本调用 asp.net web api
- javascript - 将 Jquery 转换为 Javascript 尝试失败
- javascript - Angular/TypeScript RegEx - 用于逗号分隔的文本
- python - 如何编写这个迭代?
- php - 在 5.4 版本中定义数组 php
- php - laravel 中以 API 为中心的 Web 应用程序
- azure - Azure CLI 中用于 image-copy-extension 扩展的 powershell 中的等效脚本是什么
- reactjs - Webpack 将应用代理反应到快递服务器。从 express 服务器返回 json 响应而不是响应组件
- c# - asp.net core mvc中的自定义授权