在线等,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();