strut-config.xml中要增加<message-resources />这项的,要不当然找不到了。而且它的路径就是从classes路径下开始的,如果你把properties放在classes目录下,就是ApplicationResouces ,如果放在classes/com/test下,那路径就是com.test.ApplicationResouces 当然,如果你打成jar包放在lib目录下,就是从jar包内的根目录开始寻找。
调试欢乐多
在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"); }
}
可以直接用:
<bean:message key="beyond.title"/>则为默认的ApplicationResorces.properties
就是你想要的!
这样你的配置文件实际上就是 <message-resources parameter="test" />.btw:你的资源文件还必须经过native2ascii转码,直接用这个文件也是不行地,即必须将中文"用户名错误"变成\u7ec4\u7ec7\u4e0d这种类似的格式.感觉楼主知识太薄弱,强烈建议你去好好看看书,否则很浪费时间。
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~~~~~~
--------------
如果你用的是jbuilder的话,如果想用自己的资源文件,先把web.config下的那个默认配置删除就可以了。jublider默认是ApplicationResouces
-----------------------------------------------
我现在要的就是 访问ApplicationResouces~~就是访问不到