日期:2014-05-17  浏览次数:20693 次

Struts2 用户验证 提示一直增长?
Java:

Java code

    public void validate() {
        // TODO Auto-generated method stub
        if(null == user.getUserid() || "".equals(user.getUserid().trim()));
        {
            addFieldError("userid","用户不为空");
        }
        if(null == user.getPassword() || "".equals(user.getPassword().trim()));
        {
            addFieldError("password","密码不为空");
        }
    }



Jsp:
HTML code

<s:form action="Login">
              <s:textfield name="userid" label="用户名"></s:textfield>
              <s:password name="password" label="密码"></s:password>
            <s:submit value="登录" />
          </s:form>




为什么多次点击登陆后,"用户名不为空"和"密码不为空"一直增长??怎么让它只显示一次



errors {userid=[用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空, 用户不为空], password=[密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空, 密码不为空]}

------解决方案--------------------
探讨
引用:
因为你访问一次action,就会校验一次, 那么那个addFieldError就会执行一遍.!


嗯,那为什么会多次执行,里面的校验提示会一直增加?

比如,第一次提交,提示:"密码为空"

第二次再点提交,提示两个密码为空:"密码为空","密码为空"

...

------解决方案--------------------
我提交三四次!


很显然提示信息并没有重复如下图!




下面是console输出来的信息 !


我是Action我在初始化
我是Action我在初始化
我是Action我在初始化



代码如下:

Java code
package com.ty.actions;

import com.opensymphony.xwork2.ActionSupport;
import com.ty.beans.User;

public class LoginAction extends ActionSupport {

    private User user;

    public User getUser() {
        return user;
    }

    public LoginAction() {

        System.out.println("我是Action我在初始化");
    }

    public void setUser(User user) {
        this.user = user;
    }

    public String execute() throws Exception {

        return "success";
    }

    @Override
    public void validate() {

        User user = getUser();
        String name = null;
        String pass = null;
        if (user != null) {

            name = user.getName();
            pass = user.getPassword();

            if (name != null && name.equals("")) {
                addFieldError("error", "name.error");
            }
        }

        addFieldError("error", "error");

    }

}