Struts的资源文件绑定

来源:互联网 发布:linux mysql 备份全库 编辑:程序博客网 时间:2024/04/29 10:24
在使用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.apache.org/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中的信息了。
原创粉丝点击