比如我有一个Action叫班UsersAction,我有这样一些方法:login,logout,register,等等.
我写的validate()方法如下:
@Override
public void validate() {
    if ("".equals(username)) {
        addFieldError("username", getText("username.required"));
    }
    if ("".equals(email)) {
        addFieldError("email", getText("email.required"));
    } else if (!Utils.isValidEmail(email)) {
        addFieldError("email", getText("invalid.email.address"));
    }
    if ("".equals(phone)) {
        addFieldError("phone", getText("phone.required"));
    }
    if ("".equals(password)) {
        addFieldError("password", getText("password.required"));
    }
}
问题是此解决方案仅在调用注册操作时起作用,无论如何它在登录或注销时都不起作用,因为它将检查字段是否为空或电子邮件是否正确并始终会出错.好吧,对于注销的解决办法是添加@SkipValidation在其上方标注,但我不知道如何告诉它,登录只有2场username,并password和它不是必要检查email和phone太.我不想为每个动作部分写一个Action类,因为Struts 2的目的不是这个.