Java 为什么不是';是否将操作错误消息传递到下一页?

Java 为什么不是';是否将操作错误消息传递到下一页?,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

我正在开发一个登录函数,该函数根据数据库中存储的数据对用户进行身份验证。当我试图在下一个要显示的JSP上显示登录错误消息时,即使登录信息不匹配,也没有显示该消息

struts.xml

<?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>