1.ActionMessage是不是ActionError?2.(username == null || username.equals(""))

解决方案 »

  1.   

    把application.properties烤到classes下面。
    如果提示出错为can't find error.userName.
    孙卫琴的书
    要慢慢看啊。我刚看完。
      

  2.   

    应该是  error.add("username", new ActionMessage是error不是errors
      

  3.   

    前面也要引用一下org.apache.struts.action.ActionError;
      

  4.   

    应该是  error.add("username", new ActionMessage是error不是errors
    诊断结果:误导建议楼主把完整的/helloapp/version1/下的helloapp烤到
    服务器目录下。
    不要着急,如果你手上拿着书,看书吧。
      

  5.   

    孙卫琴的书我看了一些看是能看的懂,想动手自己写一些,但一些就错,并且helloapp/version1/下的helloapp能运行,但我的ActionForm 写的和它的一样还是不行啊
      

  6.   

    不信你可以把它加入到你的Form类试一下,我都试过好几次了,急死了!
      

  7.   

    ActionMessage error = new ActionMessage("errors.password");
    ActionErrors errors = new ActionErrors();
    errors.add(ActionErrors.GLOBAL_ERROR, new ActionMessage("errors.password"));
    saveErrors(request, errors);
      

  8.   

    我教你一个好办法,(把绝活都亮出来了)
    你在原有的文件夹里改你的程序。
    不要另起炉灶。而且莫心急。
    看不懂得跳过去,回头再看你就明白了。为了解你一是燃眉之急。从这里看看:
    出错后页面会跳转到
    在struts-config文件中<action>元素的input值
    检查一下,看看你是否存在这个页面。今天头特别疼,不想编程。陪大家聊天吧:)
      

  9.   

    终于通了
    ActionErrors errors = new ActionErrors();
              if ((username == null) || (username.length() < 1))
                  errors.add("username", new ActionError("hello.no.username.error"));//错在此行          return errors;
    因为ActionErrors 类(查手册才知道的)的方法为add(java.lang.String property, ActionError error) 而不是
    add(java.lang.String property, ActionMessage error),不知道孙小姐是怎样调试通的,哈哈!顺便问一下:我是用jb2005学做struts的,用Tomcat5做服务器,每当一个页面改动时,我就把新的程序copy过来覆盖Tomcat5/webapps下原来的程序,再从新启动Tomcat,每次都这样样做很不方便,请问你们是怎样做的,有没有更好的方法?
      

  10.   

    ActionError?你的手册有点老,现在不流行ActionError,都换成ActionMessage了。
    见孙卫琴的书25页
      

  11.   

    java_augur(听着音乐),若我的手册有点老,那jb2005和Tomcat5也是老的吗?书上说的和你自己实践并不一定是完全一样的,好象它的每个例子里的Form类的代码都有add(java.lang.String property, ActionMessage error),你要小心噢,我也是初学者,哈好!
      

  12.   

    你好好看一下ActionError 类的书啊
      

  13.   

    是不是版本的问题,,,,,1.2版本的struts支持使用ActionMessages,,如果是1.1版本好就就不能用ActionMessage类的呀..
      

  14.   

    在1.2版本之前,有add(String, ActionMessage)可代替add(String, ActionError),但在1.2版本之后却不可以了!
      

  15.   

    ActionErrors errors = new ActionErrors();
              if ((username == null) || (username.length() < 1))
                  errors.add("username", new ActionMessage("hello.no.username.error"));//对我也觉得是错在这句,把ActionMessage换成ActionError就没事了,我也照着孙的书用Message可怎么也过不了,换成Error就没事了。          return errors;
      

  16.   

    是这样的,新的版本不支持errors.add("username", new ActionMessage("hello.no.username.error"));了!
      

  17.   

    我用的jakarta-tomcat-5.0.24
    下面是我的一段代码:(可以运行)
    try{
    anAccountData = new AccountDataBean();
    if(!((anAccountData.newAccount(anAccount)))){
    errors.add("insert",
    new ActionMessage("error.insert.failed"));
    }; 
    }
    catch(SQLException sqlex){
    System.out.println("this is processing newAccount catch method");
    System.err.println(sqlex.getMessage());
    sqlex.printStackTrace();
    }
    if(!errors.isEmpty()){
       saveErrors(request,errors);
       return (new ActionForward(mapping.getInput()));
    }
      

  18.   

    “是这样的,新的版本不支持errors.add("username", new ActionMessage("hello.no.username.error"));了!

    这句话有根据吗?
      

  19.   

    把Message换成Error以后编译结果:
    --------------------Configuration: adminGUI - j2sdk1.4.2_04 <Default> - <Default>--------------------
    Note: C:\jakarta-tomcat-5.0.24\webapps\forms\GroupSelectForm.java uses or overrides a deprecated API.
    Note: Recompile with -deprecation for details.Process completed.
      

  20.   

    To:java_augur(听着音乐),是有根据的,在struts1.2版本以后就不支持
    ActionErrors errors = new ActionErrors();
    errors.add("username", new ActionMessage("hello.no.username.error"));
      

  21.   

    ActionError已经被全面淘汰,这点是对的。
    http://struts.apache.org/api/org/apache/struts/action/ActionError.html调用在Action基类中定义的saveErrors()方法,配合一起使用,这样不会出现错误。
      

  22.   

    这样应该可以的,试试吧
    ActionErrors errors = new ActionErrors();
              if ( !(username != null && username.length() >0 ) )
                  errors.add("username", new ActionMessage("hello.no.username.error"));
    return errors;
      

  23.   

    实际上是你的JBuilder2005有问题,不信你换Eclipse试一下.
    Struts1.2是要去掉ActionError的,但我没有证实.
    还有ActionErrors的add方法实际上是被重载的,包括父类ActionMessages的add(String,ActionMessage)和本身的add(String,ActionError)
    Struts其实并不是最好的MVC框架!
    但开源的东西毕竟是有前途的,好好学吧!楼主
      

  24.   

    在Struts1.2里已经不推荐使用ActionError了,还有一个ActionErrors这个虽然没有被不推荐,最好也不要用,因为ActionError只是ActionMessage的一个子类,没有特别的功能。ActionErrors也一样。在Struts1.2,errors.add(String, ActionError)和errors.add(String, ActionMessage)这两个类型都可以,只是传ActionError的时候会有警告, 但是不应该出错,除非是你的编译器指定了遇到“deprecated ”警告就停止编译。在Struts1.2之后的版本里,ActionError就要消失了,大概。不推荐使用ActionError的原因,大概是觉得他太多余了。
    因为通过Globals.MESSAGE_KEY,Globals.ERROR_KEY就能都区分是错误信息还是一般的正常信息。
      

  25.   

    顺便问一下:我是用jb2005学做struts的,用Tomcat5做服务器,每当一个页面改动时,我就把新的程序copy过来覆盖Tomcat5/webapps下原来的程序,再从新启动Tomcat,每次都这样样做很不方便,请问你们是怎样做的,有没有更好的方法?
    ----------------------------------------------------------------------------------------
    楼主对JBuilder2005不熟啊!其实JBuilder2005内置了Tomcat5.0.27,使用方法如下:
    在Project-->Project Properties中将Server改为Tomcat 5后,将运行条件改为Server,
    并使用Tomcat 5.如不明白,看一下JBuilder帮助.
      

  26.   

    我个人认为不推荐使用ActionError的主要原因是因为ActionErrors的add方法,仔细想一下:
    当调用add方法时传入的第二个参数ActionError,会调用ActionErrors的哪一个add方法?
    add(String,ActionError)?还是add(String,ActionMessage)?别忘了:ActionError是可以
    隐式向上转型为ActionMessage的.Struts的框架设计者们,好象也犯了低级错误?:)
      

  27.   

    ActionErrors errors = new ActionErrors();
    if ((username == null) || (username.length() < 1))
        errors.add("username", new ActionMessage("hello.no.username.error"));return errors;
    ------------------------------------------------------------------------
    如果你的username==null,那么username.length()就会报NullPointException,因为username没有初始化。
      

  28.   

    这段代码没有问题,ActionError在新版的Struts中已经不推荐使用了,ActionMessage可以加入到ActionMessages或ActionErrors中。
    判断语句也不会有问题,因为如果username==null就直接返回true,不会再判断username.length(),这是Java语法的机制。所以出错原因可能在其它方面,楼主没有帖出出输出的异常信息,根本是无法判断的。
    可以检查一下资源文件里hello.no.username.error对应的字符串有没有设。
      

  29.   

    终于发现有知音人了
    我用的是Eclipse3.0+myEclipse+Tomcat5.0
    在调这个HELLO程序时也是出现这个问题,最后用代换法,才知道是STRUTS的版本问题
    用书带的JAR是没问题的,但用MyEclipse带的包就有问题了现在想知道到底1.2中用那个类?如何写才正确?
    好象楼上大多数兄台都只是想当然的结果,没有实际试过啊TO:楼主,看信息
      

  30.   

    你们算幸福了,我“Struts kick start”和孙小姐写两本书一起看,一本用1.1,另一本则用1.2,结果也是在error这一章中招了。结果我总结出来,要知道如何写才正确,只能看Struts User's guide,在Struts开发包中,查看文件中的tag API,我英语一般,但为了不走冤枉路,也只好硬着头皮去看,确实可以减少一些不必要的错误。最大作用是帮我们肯定书中的代码,或自己的代码是错/对!
      

  31.   

    顺便问一下:我是用jb2005学做struts的,用Tomcat5做服务器,每当一个页面改动时,我就把新的程序copy过来覆盖Tomcat5/webapps下原来的程序,再从新启动Tomcat,每次都这样样做很不方便,请问你们是怎样做的,有没有更好的方法?JB2005的WEB Model有问题,他不能把classes编译后拷贝到WEB-inf/目录下,建议升级一下补丁。
      

  32.   

    To:hjd1399(希望有你)ActionMessage(s)是ActionError(s)的基类To:jinxino_o() 
    ActionErrors之所以有add(String,ActionError)和add(String,ActionMessage)
    是因为ActionErrors已经不被推荐了,才会多出add(String,ActionMessage)这个方法,
    因为struts1.2需要过渡一下,上下兼容。
      

  33.   

    你用的是struts1.1,孙卫琴的书是1.1-1。2过度的东西,用1.2废除了ActionError.你用他附属光盘的struts版本就行
      

  34.   

    孙卫琴的书有一点内容,可以当作开发时的参考手册。但是如果你如果没有足够的java经验而想通过看书学会struts,我个人觉得比较困难。
      

  35.   

    看了struts kick start才发现
    卫琴同志把书中的例子拿过来,然后把
    actionerrors--->actionmessages
    actionerror---->actionmessage
    就成了她书中的例子了。
    结果坑了一批人。罪过
      

  36.   

    为什么我的jb2005的地址栏中有我的jsp文件地址:vfs:///file:///F:/java/struts/addressbookmodel/addressbook/index.jsp
    我想查看一下页面运行结果,结果一回车,显示的却是页面里的代码,而不是运行结果?
      

  37.   

    楼主!孙卫琴的这个例子没有问题.问题是出在你用的struts的版本.最新的版本ActionErrors.add里面就可以有AcitonMessage的参数.你可以下个最新的版本看看.
      

  38.   

    我用的是jb2005离地struts1.1,错了吗?请问要用struts1.2吗?