Struts2表单验证问题

时间:2011-03-08 22:59:33

标签: java struts2

我正在创建一个简单的登录应用程序作为我的第一个struts2表单验证应用程序。但是,我无法使验证部分正常工作。我已经尝试了我可以在google或struts docs找到的所有解决方案/示例。请帮忙.....

这是我的代码

的login.jsp

<s:form action="LoginAction" method="post">
  <s:textfield name="username" label="Login Name"/>
  <s:password name="password" label="Password"/>
  <s:submit value="Login"/>
  <s:fielderror></s:fielderror>
</s:form>

struts.xml中

<action name="LoginAction" class="com.helloworld.action.LoginAction" method="execute">
   <result name="input">/login.jsp</result>
        <result name="error">/login.jsp</result>
        <result name="success">/HelloWorld.jsp</result>
</action>

LoginAction.java

 public class LoginAction extends ActionSupport{

private String username;
private String password;

public String execute() throws Exception {

    if(this.username.equals("admin") && this.password.equals("admin"))
        return SUCCESS;

    return ERROR;
}

public void setUsername(String username) {
    this.username = username;
}
public String getUsername(){
    return this.username;
}
public void setPassword(String password) {
    this.password = password;
}
public String getPassword(){
    return this.password;
}
}

的LoginAction-validation.xml中

<validators>
    <field name="username">
        <field-validator type="requiredstring">
            <message key="user.required"/>
        </field-validator>
    </field>
</validators>

LoginAction.properties

user.required=UserName is required.

请帮忙......

由于

3 个答案:

答案 0 :(得分:1)

首先突然出现的是验证文件的名称,即LoginAction-Validation.xml。我知道该文件名的第一部分区分大小写,但我不知道第二部分。尝试将其更改为LoginAction-validation.xml(小写v)。

另外,您能描述一下您的构建环境和项目布局吗?你在使用Maven构建吗?您的验证文件是否与它引用的操作类位于同一目录中?

最后,您使用的是任何自定义拦截器堆栈,还是只使用默认的拦截器堆栈?

答案 1 :(得分:0)

请确保您已按以下方式注册验证文件

  1. 将validators.xml添加到WEB-INF / classes文件夹
  2. 将验证者的条目添加到此文件
  3.     

    <validators>
       <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
    
    </validators>
    
    1. 确保您的操作类扩展了AbstractValidationActionSupport类

答案 2 :(得分:0)

尝试在表单标记中添加validate =“true”,因为默认主题是xhtml ...

<s:form action="LoginAction" method="post" validate="true">
  <s:textfield name="username" label="Login Name"/>
  <s:password name="password" label="Password"/>
  <s:submit value="Login"/>
  <s:fielderror></s:fielderror>
</s:form>