我在登录LogonAction类中对用户进行口令验证代码如下:
ActionErrors errors = new ActionErrors();
//
if (!BaseProjectDAO.instant(httpServletRequest, ahptcVO).
validateUser()) { //验证用户口令
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("error.logon.mismatch"));//设置出错信息
}
if (!errors.isEmpty()) {
saveErrors(httpServletRequest, errors);
return (new ActionForward(actionMapping.getInput()));//返回登录页面
}
问题:我在输入错误的口令返回登录页面后html:errors没有显示信息, 该怎么解决啊(Logon.jsp用了<html:errors/>有问题吗?)
------解决方法--------------------------------------------------------
你的“request”里没有包含
“error”对象,
------解决方法--------------------------------------------------------
jsp里加上
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
------解决方法--------------------------------------------------------
错误情况下error return了吗?
------解决方法--------------------------------------------------------
我倒是不明白你说的了,
你的“request”里没有包含
“error”对象,
saveErrors(httpServletRequest, errors) 不是已经把“error”放进‘request’了。
我倒是看不出有什么问题了。
或者写成的
errors.add(“testkey”,
new ActionError("error.logon.mismatch"));
JSP:
<html:errors property="testkey">
在applicationresource.properties里要放
error.logon.mismatch= "dfsfjaslfds"
试试
------解决方法--------------------------------------------------------
getInputForward() 是相应于 action配置的 input property值。
getInput()是在validation有actionErrors里返回到进入这个Controller的forward
------解决方法--------------------------------------------------------
你return 的forward并不是保存有httpRequest(见saveErrors(httpServletRequest, errors);)的forward, 所以虽然你返回到页面,但返回并没有带有原来的request, 而是你新建的,所以……