【问题标题】:Struts 2 validation using annotation使用注解的 Struts 2 验证
【发布时间】:2013-07-21 00:37:41
【问题描述】:

我正在探索 Struts 2 中的注释。尝试使用 @RequiredFieldValidator 的简单验证没有发生,表单提交空字段。想不通,谁能帮帮我。

我的 JSP 页面:

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
</head>
<body>
<h2>Struts 2 - Login Application</h2>
<s:actionerror />
<s:fielderror />
<s:form action="login" method="post" namespace="/" > 
    <s:textfield name="username" key="label.username" size="20" />
    <s:password name="password" key="label.password" size="20" />
    <s:submit  />
</s:form>
</body>
</html>

我的动作课:

@Namespace("/")

@Results({
@Result(name="success", location="/Welcome.jsp"),
@Result(name="error", location="/Login.jsp")
})


public class LoginAction extends ActionSupport implements ValidationAware {
    /**
     * 
     */
    private static final long serialVersionUID = 5271055255991498361L;
    private String username;
    private String password;


    public String execute() {

        if (this.username.equals("admin")
                && this.password.equals("admin123")) {
            return "success";
        } else {
            return "error";
        }
    }

    @RequiredFieldValidator( message = "The name is required" )
    public String getUsername() {

        return username;
    }


    public void setUsername(String username) {

        this.username = username;
    }

    @RequiredFieldValidator( message = "The password is required" )
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

【问题讨论】:

    标签: java jsp validation struts2 annotations


    【解决方案1】:

    您应该像这样将验证器注释放在 setter 上

    @RequiredStringValidator(type= ValidatorType.FIELD, message = "The name is required.")
    public void setUsername(String username) {
        this.username = username;
    }
    

    RequiredFieldValidator 检查null 值但字符串字段不是null,如果它们为空,请使用RequiredStringValidator。您还应该在操作上运行validation 拦截器。

    另外,我认为您应该仔细阅读框架使用的type conversion

    【讨论】:

    • @user1448660 它可用于验证其他非String 类型的值。转换后它会检查null。请刷新页面,因为您可能看不到最后的更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多