CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  框架、开源

struts中<html:errors/>错误怎么就显示不出来呢???

楼主pandasea()2006-05-01 15:14:55 在 Java / 框架、开源 提问

提交后不管是validate验证还是Action验证错误时<html:errors/>都没有显示出来,这里我没有用propertis,但是也应该可以的吧???望大家帮忙,先谢了!!  
   
  //*************************struts-config.xml  
  <?xml   version="1.0"   encoding="iso-8859-1"?>  
  <!DOCTYPE   struts-config   PUBLIC  
                      "-//Apache   Software   Foundation//DTD   Struts   Configuration   1.2//EN"  
                      "struts-config_1_2.dtd">  
   
  <struts-config>  
   
              <form-beans>  
                  <form-bean   name="userLoginForm"   type="UserLoginForm"/>  
                  <form-bean   name="userRegisterForm"   type="UserRegisterForm"/>  
              </form-beans>  
   
              <action-mappings>  
                  <action         path="/checkUserAction"  
                                        type="CheckUserAction"  
                                        name="userLoginForm"  
                                        scope="request"  
                                        input="/index.jsp"  
                                        validate="true"  
                                        >  
                                        <forward   name="success"   path="/welcome.jsp"/>  
                                        <forward   name="fail"   path="/failed.jsp"/>  
                  </action>  
   
                  <action         path="/addUserAction"  
                                        type="AddUserAction"  
                                        name="userRegisterForm"  
                                        scope="request"  
                                        input="/register.jsp"  
                                        validate="true"  
                                        >  
                                        <forward   name="success"   path="/welcome.jsp"/>  
                                        <forward   name="fail"   path="/failed.jsp"/>  
                  </action>  
              </action-mappings>  
   
              <message-resources   parameter="resources.application"   null="true"/>  
  </struts-config>  
   
   
   
  //*************************index.jsp  
  <%@   page   contentType="text/html;   charset=gb2312"   language="java"   import="java.sql.*"%>  
  <%@   taglib   uri="/WEB-INF/struts-bean.tld"     prefix="bean"   %>    
  <%@   taglib   uri="/WEB-INF/struts-html.tld"     prefix="html"   %>  
  <%@   taglib   uri="/WEB-INF/struts-logic.tld"   prefix="logic"   %>  
  <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.01   Transitional//EN"   "http://www.w3.org/TR/html4/loose.dtd">  
  <html:html   locale="true">  
  <head>  
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  <title>首页</title>  
  </head>  
   
  <body>  
  <p>登录</p>  
  <p><font   color=red><html:errors/></font></p>  
  <html:form   method="post"   action="checkUserAction">  
      <p>用户名:  
          <html:text   property="userName"   value=""   size="10"/>  
  <font   color=red>                               <html:errors   property="userName"/></font>  
      </p>  
      <p>密&nbsp;&nbsp;码:  
          <html:password   property="userPassword"   value=""   size="10"/>  
  <font   color=red><html:errors   property="userPassword"/></font>  
      </p>  
      <p><html:submit   property="submit"   value="登录"/></p>  
      </html:form>  
  <p><a   href="register.jsp">注册</a></p>  
  </body>  
  </html:html>  
   
   
   
  //*************************UserLoginForm.java  
  import   javax.servlet.http.HttpServletRequest;  
  import   org.apache.struts.action.*;  
  import   org.apache.struts.util.MessageResources;  
   
  public   class   UserLoginForm   extends   ActionForm   {  
          private   String   userName;  
          private   String   userPassword;  
           
          public   String   getUserName()   {  
                  return   userName;  
          }  
           
          public   void   setUserName(String   userName)   {  
                  this.userName=userName;  
          }  
           
          public   String   getUserPassword()   {  
                  return   userPassword;  
          }  
           
          public   void   setUserPassword(String   userPassword)   {  
                  this.userPassword=userPassword;  
          }  
           
          public   ActionErrors   validate(ActionMapping   mapping,HttpServletRequest   request)   {  
                  ActionErrors   errors=new   ActionErrors();  
                  if(userName.trim().length()<6||userName.trim().length()>10)  
                          errors.add("userName",new   ActionError("用户名填写不正确"));  
                  if(userPassword.trim().length()<6||userPassword.trim().length()>10)  
                          errors.add("userPassword",new   ActionError("密码填写不正确"));  
                  if(!errors.isEmpty())  
                          errors.add("registerFailed",new   ActionError("登录失败"));  
                  return   errors;  
          }  
  }  
   
   
   
  //*************************CheckUserAction.java  
  import   javax.servlet.http.*;  
  import   org.apache.struts.action.*;  
  import   org.apache.struts.util.MessageResources;  
   
  public   class   CheckUserAction   extends   Action   {  
          public   ActionForward   execute(ActionMapping   mapping,ActionForm   form,  
                          HttpServletRequest   request,HttpServletResponse   response)  
                          throws   Exception   {  
                  UserLoginForm   actionForm=(UserLoginForm)form;  
                  String   userName=actionForm.getUserName();  
                  String   userPassword=actionForm.getUserPassword();  
                  CheckUser   checkUser=new   CheckUser();  
                  boolean   f=checkUser.check(userName,userPassword);  
                   
                  if(f)   {  
                          HttpSession   session=request.getSession();  
                          session.setAttribute("userName",userName);  
                          return(mapping.findForward("success"));  
                  }  
                           
                  else   {  
                          ActionMessages   errors=new   ActionMessages();  
                          errors.add("loginFailed",new   ActionMessage("用户名不存在或密码错误"));  
                          saveErrors(request,errors);  
                          return(mapping.findForward("fail"));  
                  }  
          }  
  }  
   
   
  //*************************CheckUser.java  
  import   java.sql.*;  
  public   class   CheckUser   {  
          Connection   con=null;  
          Statement   sm=null;  
          ResultSet   rs=null;  
          boolean   f;  
           
          public   boolean   check(String   userName,String   userPassword)   {  
                  try   {  
                          Class.forName("com.mysql.jdbc.Driver");  
                          con=DriverManager.getConnection("jdbc:mysql://localhost:3306/register","client","123456");  
                          sm=con.createStatement();  
                          rs=sm.executeQuery("select   *   from   user   where   userName='"+userName+"'   and   userPassword='"+  
                                          userPassword+"'");  
                          if(rs.next())  
                                  f=true;  
                          else   f=false;  
                  }  
                  catch   (Exception   e)   {  
                          e.printStackTrace();  
                  }  
                  finally   {  
                          if(rs!=null)   {  
                                  try   {  
                                          rs.close();  
                                  }  
                                  catch(SQLException   e)   {  
                                          System.out.println(e);  
                                  }  
                                  rs=null;  
                          }  
                          if(sm!=null)   {  
                                  try   {  
                                          sm.close();  
                                  }  
                                  catch(SQLException   e)   {  
                                          System.out.println(e);  
                                  }  
                                  sm=null;  
                          }  
                          if(con!=null)   {  
                                  try   {  
                                          con.close();  
                                  }  
                                  catch(SQLException   e)   {  
                                          System.out.println(e);  
                                  }  
                                  con=null;  
                          }  
                          return   f;  
                  }  
   
          }  
   
  }  
   
  问题点数:20、回复次数:7Top

1 楼imA(男的不会,会的不男)回复于 2006-05-01 15:50:28 得分 0

有两种方法:  
  一        
  不改动jsp代码,改动java代码  
   
  把校验代码errors.add("loginFailed",new   ActionMessage("用户名不存在或密码错误"));这样的代码全部改为:errors.add(org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE,new   ActionMessage("XXX"));  
   
  二  
  不改动java代码,改动jsp代码  
   
  把jsp中的<html:errors/>改为<html:error   property="userName"/><br><html:error   property="userPassword"/><br><html:error   property="registerFailed"/><br><html:error   property="loginFailed"/>  
   
   
   
  因为<html:errors/>标签在查找的时候是查找request上下文的org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE所对应的值,这也就是第一种改法的原因,也是你代码中无法显示错误提示的原因。Top

2 楼imA(男的不会,会的不男)回复于 2006-05-01 15:53:09 得分 0

具体的楼主可以详细的看看struts的源代码,主要是校验部分的(如何将错误提示信息存入request中)和<html:errors/>标签的源代码(如何查找错误信息以及显示)Top

3 楼pandasea()回复于 2006-05-01 16:11:52 得分 0

先谢了楼上的,但是这两个方法我试了都不管用,还是什么错误也没有输出.我原来的程序不只是<html:errors/>不能显示,<html:errors   property="userName"/>等其它的具体的错误也没有一条能显示出来Top

4 楼fhway(不会游泳的鱼)回复于 2006-05-03 14:01:11 得分 0

你的resources.application   进行中文格式转换了吗?Top

5 楼Michael_javavb()回复于 2006-05-05 08:39:26 得分 0

这个问题我也碰到过,就昨天,想了好久,很郁闷的说,我后来改好了,看了error标签的源码后知道原因了。  
  ActionMessages   errors=new   ActionMessages();  
  errors.add("loginFailed",new   ActionMessage("用户名不存在或密码错误"));  
  这里是有问题的,其他不用改,把这两句改为:  
  ActionErrors   errors=new   ActionErrors();  
  errors.add(ActionErrors.GLOBAL_ERROR,   new   ActionError(jsp.abc));  
  其实是因为有些struts版本里的error标签不支持ActionMessage的。  
  jsp.abc="用户名不存在或密码错误"  
  写入资源文件。Top

6 楼jupiter97(网际异行)回复于 2006-08-31 23:17:40 得分 0

搞了一晚上这个问题总算有结果了,不知道我的问题跟楼主的事不是一样,贴出来参考一下:  
  我是将web.xml中的  
  <init-param>  
        <param-name>application</param-name>  
        <param-value>ApplicationResource</param-value>  
  </init-param>  
  改成:  
  <init-param>  
        <param-name>application</param-name>  
        <param-value>GoodTradeResource</param-value>  
  </init-param>  
  其中“GoodTradeResource”是我的.properties   文件的前缀  
  (如:GoodTradeResource_zh_CN.properties)  
  Top

7 楼imA(男的不会,会的不男)回复于 2006-09-01 10:59:30 得分 0

tmd,又是一个不结贴的,曰Top

相关问题

关键词

得分解答快速导航

  • 帖主:pandasea

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo