Struts2的Action中自定义方法的输入校验

自定义方法的输入校验

  1. 对于通过 action​ 的 method​ 属性所指定的自定义方法 myExecute​ ,其对应的自定义输入校验方法名为 validateMyExecute​ 。 (底层是通过反射调用的)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void validateMyExecute() {
    System.out.println("validateMyExecute invoked");

    this.addActionError("action error");
    }

    public String myExecute() throws Exception {
    System.out.println("myExecute invoked");
    return SUCCESS;
    }
  2. 校验方法的执行顺序

    当在 Action​ 中指定了自定义的 execute​ 方法时,首先会执行自定义的 execute​ 方法所对应的输入校验方法,然后再去执行 validate​ 方法,执行完毕之后如果出现了任何错误都不会再去执行自定义的 execute​ 方法,流程转向了 input​ 这个名字所对应的页面上。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public void validateMyExecute() {
    System.out.println("validateMyExecute invoked");

    this.addActionError("action error");
    }

    @Override
    public void validate() {
    System.out.println("validate invoked");

    // this.addActionError("action error");
    }

    @Override
    public String execute() throws Exception {
    return SUCCESS;
    }

    public String myExecute() throws Exception {
    System.out.println("myExecute invoked");
    return SUCCESS;
    }
    // validateMyExecute invoked
    // validate invoked

    效果

自定义 Field 级别的校验信息

在 Action 的同级目录新建一个属性文件,例如:RegisterAction.properties

1
2
invalid.fieldvalue.birthday=age invalid custom msg
invalid.fieldvalue.graduation=graduation invalid custom msg

结果如下:

总结:

  1. 新建一个以 Action​ 名命名的 properties 文件,如: RegisterAction.properties

  2. 然后在该属性文件中指定每一个出错字段的错误消息,格式:

    1
    invalid.fieldvalue.borthday=birthday invalid custom msg

作者

Terwer

发布于

2022-11-03

更新于

2022-11-03

许可协议

评论