对象中的弹簧形式验证

时间:2014-09-12 03:15:36

标签: spring validation view

说我的命令看起来像这样

public class MyForm {
    @Max(99)
    private int mode;
    private MyObj myObj;

我的MyObj是

public class MyObj {
    private String myStr;
    private int myInt;

我的控制器看起来像这样

@Controller
public class MyController {
    @RequestMapping(value = "/Anything.htm")
    public String AnythingMethod(@Valid MyForm myForm, .....

我的JSP看起来像这样

<form:input path="mode"/>
<form:input path="myObj.myStr"/>

如何为myStr和myInt注入@NotNull @MAx @Min等验证?如何在messages.properties中指定错误消息?请帮忙。

1 个答案:

答案 0 :(得分:1)

不确定问题中发布的代码是否完整,您可能会遗漏一些注释。此外,由于您在评论中提到某些其他字段的验证有效,我将假设您拥有所有dependencies sorted out

所以试试这个:

MyForm课程中:

public class MyForm {
    @Max(99, message="{myform.mode.max}")
    private int mode;

    @Valid // add @valid annotation
    private MyObj myObj;

MyObj课程中:

public class MyObj {
    @NotBlank(message="{myobj.mystr.notnull}")
    private String myStr;

    @Max(/* some value */, message="{myobj.mystr.max}")
    @Min(/* some value */, message="{myobj.mystr.min}")
    private int myInt;

MyController课程中:

@Controller
public class MyController {
    @RequestMapping(value = "/Anything.htm") /* add @ModelAttribute annotation */       
    public String AnythingMethod(@Valid @ModelAttribute('myForm') MyForm myForm, .....) 

至于在.properties文件中指定错误消息,将它们全部放入ValidationMessages.properties文件中,并将此文件添加到类路径的根目录中。 (例如,/WEB-INF/classesresources文件夹等。)。

希望这有帮助。