Struts的资源绑定 在使用Struts时,我在我的struts-config.xml中配置了两个资源文件,如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta./struts/dtds/struts-config_1_1.dtd"> <struts-config> <data-sources /> <form-beans > <form-bean name="loginForm" type="zy.pro.shd.controller.form.LoginForm" />
</form-beans>
<global-exceptions /> <global-forwards /> <action-mappings > <action attribute="loginForm" input="/web/user/loginForm.jsp" name="loginForm" path="/login" scope="request" type="zy.pro.shd.controller.action.LoginAction"> <forward name="success" path="/web/user/loginResult.jsp" /> <forward name="failure" path="/web/user/loginResult.jsp" /> </action>
</action-mappings>
<message-resources parameter="zy.pro.shd.res.ApplicationResources_en" /> <message-resources parameter="zy.pro.shd.res.ApplicationResources_en1" /> 注意:这样就会出现错误,因为设定了两个默认资源。 </struts-config> 我在我的jsp页面中使用如下方式来访问我的资源文件 <body> <br> <a href="web/user/loginForm.jsp" target="_blank">user login </a> <br> <bean:message key="user.login"/> <bean:message key="user.go"/> <br> </body> 结果就出现了以下异常: javax.servlet.ServletException: Missing message for key "a.label" org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758) org.apache.jsp.web.index_jsp._jspService(index_jsp.java:79) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) zy.pro.shd.filter.ChineseFilter.doFilter(ChineseFilter.java:51) 如果我们的资源设置如下:
<message-resources parameter="zy.pro.shd.res.ApplicationResources_en" /> <message-resources key=”res1” parameter="zy.pro.shd.res.ApplicationResources_en1" />注意:这样,前者为默认,后者不是。
记住:<message-resources/>配置的是默认资源。如果需要配置多个则需要设置其键值。如果在程序(如在Action)中要访问另外的资源文件,可以使用如下办法:
Local local=getLocal(request); MessageResources message=getResources(request,”res1”); String msg=messages.getMessage(locale,”hello.no.username”);
这样,就可以访问res1中的信息了。
|