Joh*_*gel 7 java spring spring-mvc hibernate-validator spring-web
在我的控制器中,我有一个创建实体的方法
import javax.validation.Valid;
...
@RestController
public class Controller {
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<?> create(@Valid @RequestBody RequestDTO requestDTO) {
...
Run Code Online (Sandbox Code Playgroud)
同
import org.hibernate.validator.constraints.NotEmpty;
...
public class RequestDTO
@NotEmpty // (1)
private String field1;
//other fields, getters and setters.
Run Code Online (Sandbox Code Playgroud)
我想添加一个控制器方法
update(@Valid @RequestBody RequestDTO requestDTO)
Run Code Online (Sandbox Code Playgroud)
但是在这个方法中应该允许为field1空或为空,即行
@NotEmpty // (1)
Run Code Online (Sandbox Code Playgroud)
的RequestDTO应该被忽略.
我怎样才能做到这一点?我是否必须编写一个看起来完全相同的类RequestDTO,但没有注释?或者通过继承以某种方式可能?
Ali*_*ani 11
简短回答:使用验证组:
@NotEmpty(groups = SomeCriteria.class)
private String field1;
Run Code Online (Sandbox Code Playgroud)
并在方法处理程序参数中引用您的目标组:
public ResponseEntity<?> create(@Validated(SomeCriteria.class) @RequestBody RequestDTO requestDTO)
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,SomeCriteria将应用组中的验证,而其他验证将被忽略.通常,这些验证组被定义为空接口:
public interface SomeCriteria {}
Run Code Online (Sandbox Code Playgroud)
您可以在Hibernate Validator文档中阅读有关这些组约束的更多信息.
| 归档时间: |
|
| 查看次数: |
1676 次 |
| 最近记录: |