Spring @仅选定字段上的有效批注
我有一个account类,我在其中使用如下符号:Spring @仅选定字段上的有效批注,spring,forms,validation,model-view-controller,Spring,Forms,Validation,Model View Controller,我有一个account类,我在其中使用如下符号: @NotNull private String name; 在account中有许多字段,我分别以两种形式使用它们。问题是我的第一个表单没有包含 private String name; 当我提交表单时,验证检查失败,因为正在检查实际表单中不存在的字段 本质上,验证总是会失败,因为变量在同一个类中,但没有以这种特定的形式使用 要解决这个问题,我必须使用Spring验证器类吗 谢谢。我认为在使用验证注释时,您可能无法克服此类问题。但你可以试试这
@NotNull
private String name;
在account中有许多字段,我分别以两种形式使用它们。问题是我的第一个表单没有包含
private String name;
当我提交表单时,验证检查失败,因为正在检查实际表单中不存在的字段
本质上,验证总是会失败,因为变量在同一个类中,但没有以这种特定的形式使用
要解决这个问题,我必须使用Spring验证器类吗
谢谢。我认为在使用验证注释时,您可能无法克服此类问题。但你可以试试这些:
- 为两个表单创建两个自定义类,只验证其中一个表单的名称,不验证另一个表单的名称
- 您还可以尝试在controller方法中手动验证自己的字段。Autowire验证程序类,并在方法内部进行验证
@Autowired Validator validator; public methodA(Model model, @ModelAttribute("modelA") ModelA modelA, BindingResult result){ validator.validate(modelA, result); if (result.hasErrors()){ // do something } else { // do something else } }
- 为两个表单创建两个自定义类,只验证其中一个表单的名称,不验证另一个表单的名称
- 您还可以尝试在controller方法中手动验证自己的字段。Autowire验证程序类,并在方法内部进行验证
@Autowired Validator validator; public methodA(Model model, @ModelAttribute("modelA") ModelA modelA, BindingResult result){ validator.validate(modelA, result); if (result.hasErrors()){ // do something } else { // do something else } }