Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
Spring @仅选定字段上的有效批注_Spring_Forms_Validation_Model View Controller - Fatal编程技术网

Spring @仅选定字段上的有效批注

Spring @仅选定字段上的有效批注,spring,forms,validation,model-view-controller,Spring,Forms,Validation,Model View Controller,我有一个account类,我在其中使用如下符号: @NotNull private String name; 在account中有许多字段,我分别以两种形式使用它们。问题是我的第一个表单没有包含 private String name; 当我提交表单时,验证检查失败,因为正在检查实际表单中不存在的字段 本质上,验证总是会失败,因为变量在同一个类中,但没有以这种特定的形式使用 要解决这个问题,我必须使用Spring验证器类吗 谢谢。我认为在使用验证注释时,您可能无法克服此类问题。但你可以试试这

我有一个account类,我在其中使用如下符号:

@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
        }
    }