Java 为什么不是';是否将操作错误消息传递到下一页?
我正在开发一个登录函数,该函数根据数据库中存储的数据对用户进行身份验证。当我试图在下一个要显示的JSP上显示登录错误消息时,即使登录信息不匹配,也没有显示该消息 struts.xmlJava 为什么不是';是否将操作错误消息传递到下一页?,java,struts2,Java,Struts2,我正在开发一个登录函数,该函数根据数据库中存储的数据对用户进行身份验证。当我试图在下一个要显示的JSP上显示登录错误消息时,即使登录信息不匹配,也没有显示该消息 struts.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://str
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources" />
<package name="default" extends="struts-default" namespace="/">
<action name="login" class="package1.LoginAction">
<result name="success">MainPage.jsp</result>
<result name="error">Login.jsp</result>
</action>
</package>
</struts>
Login.jsp
<table border="0" align="center">
<tr><s:actionerror /></tr>
</table>
<s:form action="login.action" method="post">
<table border="0" align="center">
<tr><s:textfield name="uid" key="label.username" size="20" /></tr>
<tr><s:password name="psw" key="label.password" size="20" /></tr>
<tr><s:select name="domain"
key="label.domain"
headerKey="1"
headerValue="-- Please Select --"
list="#{'01':'Tutor','02':'Student'}" /></tr>
<tr><s:submit method="execute" key="label.login" align="center" /></tr>
</table>
</s:form>
我看不出您使用了key
错误。登录
,那么您希望struts如何显示它呢?您需要自己放置错误消息,例如,在您的操作中调用addActionError(“此处的消息”)
。我看不到您在哪里添加了addActionError
,基本上如果您想设置任何此类操作级别的错误,只需调用addActionError()或ActionMessage,一旦您设置了它们,ypu就需要使用
或
你需要在你的动作课上设置一些类似的东西
if (count==0)
{
addActionError("Invalid Username/Password. Please try again");
return "error" ;
}
else if (msg=="wrongpsw"){
addActionError("Invalid Username/Password. Please try again");
return "error";
}
else{
return "success";
}
另外,最好检查jsp上的堆栈中是否存在任何错误
<s:if test="hasActionErrors()">
<table border="0" align="center">
<tr><s:actionerror/></tr></table>
</s:if>
希望这会有所帮助为什么要记录异常,然后继续?此外,您的返回值是基于使用
==
比较字符串来选择的;在这种情况下,它可能会工作,因为字符串实习,但这是一个可怕的做法。
if (count==0)
{
addActionError("Invalid Username/Password. Please try again");
return "error" ;
}
else if (msg=="wrongpsw"){
addActionError("Invalid Username/Password. Please try again");
return "error";
}
else{
return "success";
}
<s:if test="hasActionErrors()">
<table border="0" align="center">
<tr><s:actionerror/></tr></table>
</s:if>