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

在线等,Struts2的ActionError总显示累计的所有错误信息,怎么显示只有一条呢
代码如下:
Action配置
<!-- 用户登录 -->
        <action name="loginAction" class="userAction" method="login">
         <interceptor-ref name="defStack" />
         <result name="success">/index.jsp</result>
         <result name="input">/login.jsp</result>
        </action>

页面显示代码
<span id="meserror" style="color:red"><s:actionerror/></span>
登陆方法代码
/**
 * 管理员登录
 * @return
 * @throws Exception
 */
public String login() throws Exception {
User user = userService.getUserByName(name);
if (user != null && !user.equals("")) {
if(pass.equals(user.getPass())){
if(user.getIsSystemDefault().equals(SnConstrants.ISSYSTEMDEFAULT_TRUE)){ //是否为系统内部管理员,加载对应权限

}else if(user.getIsSystemDefault().equals(SnConstrants.ISSYSTEMDEFAULT_FALSE)){//是否为客户管理员,加载对应权限

}
}else{
addActionError("密码错误,请重新输入!");
}
}else{
addActionError("用户名不存在,请重新输入!");
}
return "input";
}

测试的时候,<s:actionerror/>标签会把所有累计的错误信息显示出来,而不是一条,如下是测试了多次的显示结果:

密码错误,请重新输入! 
密码错误,请重新输入! 
密码错误,请重新输入! 
密码错误,请重新输入! 
密码错误,请重新输入
! 

------解决方案--------------------
每次调用 addActionError(msg);之前先调用 clearActionErrors();