我用 struts + spring + ibatis 作了一个程序。
用户登陆时,如果密码正确没有什么问题;
如果输入的密码错误,会有提示。但是,在之后不管输入什么,表单都不提交了。Action 代码public class LoginAction extends ActionSupport { private static final long serialVersionUID = 1L;

private static Logger log = Logger.getLogger(LoginAction.class); private LoginService loginService;

private AdminPo admin;

private List<UserPo> list = new ArrayList<UserPo>(); @Override
public String execute() throws Exception {
if(admin == null) {
return INPUT;
} boolean login = false;
login = loginService.login(admin);
if(!login) {
//提示错误信息
this.addFieldError("admin_login_fail", "用户名或密码错误");
log.error(admin.getName() + ", 登陆失败");
admin = null;
return INPUT;
}

Map<String, Object> sessionMap = ActionContext.getContext().getSession();
sessionMap.put(Common.LOGIN_ADMIN, admin.getName());
sessionMap.put(Common.ADMINLOGIN, "true");

return SUCCESS;
}

//省略 get, set 方法

}login.jsp
<div id="login_div">
<span id="tip" class="error">如果忘记密码,请与管理员联系</span>
<s:form action="login" method="post" id="login_form">
<table id="login_table">
<tr>
<td>用户名</td>
<td>
<input type="text" id="adminName" name="admin.name" value="">
<span id="name" class="error"></span>
</td>
</tr>

<tr>
<td>密码</td>
<td>
<input type="password" id="adminPassword" name="admin.password" value="">
<span id="password" class="error"></span>
</td>
</tr>
</table>
<!--显示错误信息-->
<span id="errorMessage"><s:fielderror></s:fielderror></span>
<s:submit id="login_button" value=""/>
</s:form>
</div>
经过我的测试,问题出在这句话//提示错误信息
this.addFieldError("admin_login_fail", "用户名或密码错误");
删除这句话后,这正常了。
可是,删了这句话,那输入错误是又没有提示了,
请各位老大帮忙看看

解决方案 »

  1.   

    admin_login_fail这个是你要在前台页面显示错误信息的id,你前台页面都没有这个id的fielderror
      

  2.   


    后台没有报错,只有在输入一次错误密码以后才不能提交第一次输入错误时,控制台打印:
    (44907 ms) [http-8080-1] ERROR: net.szpt.ei.obs.action.LoginAction#execute : admin, 登陆失败后边不管输入的对还是错,点提交都没有任何反应
      

  3.   


    前台页面就是 login.jsp 我加了<span id="user_login_error"><s:fielderror id="admin_login_fail"></s:fielderror></span>
    也还是一样的,错误一次后不能提交
      

  4.   

    把代码补全呀,校验用户是否通过的方法login呢?