我使用的是Spring 3和JSR303。我有一个形式的备用对象,其嵌套对象需要验证。在下面的示例中,如何验证FormObject.getFoo().getBean()?当我运行下面的代码时,即使HTML页面不提交验证时,结果参数始终是空的,即使验证应失败。请注意,当我通过调用手动验证它时,它有效(即验证失败) validate(formObject.getFoo().getBean(), Bean.class).

@Controller
public class FormController {
    @RequestMapping(method = RequestMethod.POST)
    public void process(HttpServletRequest request, @Valid FormObject formObject, BindingResult result) {
            ...
    }

    // This is the class that needs to be validated.
    public class Bean {
        @NotBlank
        private String name;
    }

    public class Foo {
        private Bean bean;
    }

    public class FormObject {
        private Foo foo;
    }
}
有帮助吗?

解决方案

如果您想验证将级联下降到子对象中,则必须将@valid注释放在父对象的字段上:

public class Bean {
    @NotBlank
    private String name;
}

public class Foo {
    @Valid
    private Bean bean;
}

public class FormObject {
    @Valid
    private Foo foo;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top