strut-config.xml中要增加<message-resources />这项的,要不当然找不到了。而且它的路径就是从classes路径下开始的,如果你把properties放在classes目录下,就是ApplicationResouces ,如果放在classes/com/test下,那路径就是com.test.ApplicationResouces 当然,如果你打成jar包放在lib目录下,就是从jar包内的根目录开始寻找。

解决方案 »

  1.   

    楼上的2位!我看教科书上,怎么都是直接访问 ApplicationResouces? 都不用去struct-config.xml 里设的
    在JSP里虽然可以 在struct-config.xml 设, 无所谓但在 java.class里 怎么访问指定的资源文件呢?
    我按教材抄了一遍,这样也访问不到资源文件的 ,请帮忙改改 看看 怎样指定一个资源文件
    假如: 工程目录在 k:\javacode\struct1, k:\javacode\struct1\src,k:\javacode\struct1\classes
    web目录 k:\javacode\struct1\root 资源文件k:\javacode\struct1\web-inf\classess\test.properties
    资源文件里有
    error.login.username=用户名错误
    ------------java代码--------------
     import org.apache.struts.action.*;
    import javax.servlet.http.*;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.Action;
     public class LogonAction extends Action
    {
      public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
      {
         
         LogonForm theForm=(LogonForm) actionForm;
         ActionErrors errors=new ActionErrors();
         if(theForm.getUsername().equals("beyond") && theForm.getPassword().equals("1113"))
         {
           return actionMapping.findForward("succ");
         }
         else if (theForm.getUsername().equals("beyond"))
         {
           errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("error.login.username"));     }
         else
         {
           errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("error.login.username"));     }
        if (!errors.isEmpty())
        {
         saveErrors(httpServletRequest,errors);    }    return actionMapping.findForward("fail");  }
    }
      

  2.   

    直接用<bean:message key="beyond.title"/>不行吗?
      

  3.   

    <bean:message bundle="mymsg" key="beyond.title"/> 需要根据bundle来找key为mymsg的properties文件! 
    可以直接用:
    <bean:message key="beyond.title"/>则为默认的ApplicationResorces.properties 
    就是你想要的!
      

  4.   

    哎呀,就是 说 直接 <bean:message key="beyond.title"/> 访问不到 ApplicationResorces.properties  !
      

  5.   

    呵呵,首先声明:书上写的可不一定全是对的,很多出书的都是搞俺们这行的,未必敢保就没有错误.出版商可是啥都不会,所以你也不要太过分依赖书的哦.不过话说回来,书上的也有可能没错,可能是structs默认访问的就ApplicationResorces.properties,如果你不在structs-config.xml中设置的话.这段代码偶懒得再去看structs的代码了,但是养成一个好习惯总不是什么错误.还有,我劝你干脆把k:\javacode\struct1\classes去掉算了,直接就用k:\javacode\struct1\root\WEB-INF\classes.否则来回折腾你嫌不麻烦啊.哈,我知道了,有可能是你的目录指向不对.实际上structs读的是k:\javacode\struct1\root\WEB-INF\classes,而你实际项目里是把编译后的classes放到了k:\javacode\struct1\classes里,所以找不到文件.k:\javacode\struct1\web-inf\classess\test.properties这里也有个错误,是classes不是classess
    这样你的配置文件实际上就是    <message-resources parameter="test" />.btw:你的资源文件还必须经过native2ascii转码,直接用这个文件也是不行地,即必须将中文"用户名错误"变成\u7ec4\u7ec7\u4e0d这种类似的格式.感觉楼主知识太薄弱,强烈建议你去好好看看书,否则很浪费时间。
      

  6.   

    TO: 飞星
    1 还有,我劝你干脆把k:\javacode\struct1\classes去掉算了,直接就用k:\javacode\struct1\root\WEB-INF\classes.否则来回折腾你嫌不麻烦啊.
    ----------------------------------------------------------
    哈,这个,不叫来回折腾,你在jbuilder9中编译后,会把编译文件 直接放到k:\javacode\struct1\classes 和k:\javacode\struct1\root\WEB-INF\classes2  哈,我知道了,有可能是你的目录指向不对.实际上structs读的是k:\javacode\struct1\root\WEB-INF\classes,而你实际项目里是把编译后的classes放到了k:\javacode\struct1\classes里,所以找不到文件.
    -------------------------------------
    参考 我的回复1,所以你的 猜测不成立~~~3 k:\javacode\struct1\web-inf\classess\test.properties这里也有个错误,是classes不是classess
    这样你的配置文件实际上就是    <message-resources parameter="test" />.-------------------------
    是classes  纯属于笔误~~~4 btw:你的资源文件还必须经过native2ascii转码,直接用这个文件也是不行地,即必须将中文"用户名错误"变成\u7ec4\u7ec7\u4e0d这种类似的格式.
    ------------------------
    已经转码,我是为了 表达,所以才用中文表达5感觉楼主知识太薄弱,强烈建议你去好好看看书,否则很浪费时间。
    -------------------------
    正在努力ING~~~~~~
      

  7.   

    如果你用的是jbuilder的话,如果想用自己的资源文件,先把web.config下的那个默认配置删除就可以了。jublider默认是ApplicationResouces
      

  8.   


    --------------
    如果你用的是jbuilder的话,如果想用自己的资源文件,先把web.config下的那个默认配置删除就可以了。jublider默认是ApplicationResouces
    -----------------------------------------------
    我现在要的就是 访问ApplicationResouces~~就是访问不到
      

  9.   

    我没用过jbuilder,一直使eclipse,但是我觉得,一个好的IDE是可以让你随意指定编译目录的,你的回复一,应该是可以修改编译后的路径的,只不过你使用的是jbuilder默认的而已。如果你还无法访问ApplicationResouces,你把那个文件名称改一下,路径不要变,只改文件名,看看能否正常访问?实在不行的话就把你的代码发给我,我帮你看下吧。[email protected]