AppFuse中DisplayTag乱码问题的解决(1.9)

AppFuse中DisplayTag乱码问题的解决(1.9)
AppFuse中DisplayTag乱码问题的解决
2007-06-11 18:01

工作环境:Windows Server2003SE,Eclipse3.1.1,MySQL5.0,Tomcat5.5.9,JDK1.5.0_07,Ant1.6.5
在中文环境下使用AppFuse,会遇到DisplayTag的题头信息乱码现象(最新发布的AppFuse1.9.4也有这个问题),如下图:AppFuse中DisplayTag乱码问题的解决(1.9)_第1张图片

解决方法:
1.查看web/web-inf/classes目录下是否存在displaytag_zh_CN.properties配置文件,1.9.1前的版本没有中文版本的配置文件.如果Eclipse中打开看到的是乱码,选择File->Properties 选择UTF-8类型查看,下同。
2.打开项目build.xml文件,找到target copy-resources所在位置(通过字符串copy-resources查找快)
将原来的代码:
      <target name="copy-resources" depends="prepare"
          description="Copy .properties and .xml files from source directory">
          <copy todir="${build.dir}/web/classes" includeEmptyDirs="no">
              <fileset dir="web/WEB-INF/classes">
                  <exclude name="ApplicationResources_zh*.properties"/>
                  <include name="*.properties"/>
                  <include name="*.xml"/>
                  <include name="*.vm"/>
              </fileset>
              <filterset refid="variables.to.replace"/>
          </copy>
          <native2ascii src="web/WEB-INF/classes" _fcksavedurl=""web/WEB-INF/classes"" dest="${build.dir}/web/classes"
              includes="ApplicationResources_zh*.properties" encoding="UTF-8"/>
          <generate-database-properties/>
          <copy todir="${build.dir}/web/classes" file="database.properties"/>
      </target>
修改为(添加红色的):
      <target name="copy-resources" depends="prepare"
          description="Copy .properties and .xml files from source directory">
          <copy todir="${build.dir}/web/classes" includeEmptyDirs="no">
              <fileset dir="web/WEB-INF/classes">
                  <exclude name="ApplicationResources_zh*.properties"/>
                  <exclude name="displaytag_zh*.properties"/>                
                  <include name="*.properties"/>
                  <include name="*.xml"/>
                  <include name="*.vm"/>
              </fileset>
              <filterset refid="variables.to.replace"/>
          </copy>
          <native2ascii src="web/WEB-INF/classes" dest="${build.dir}/web/classes"
              includes="ApplicationResources_zh*.properties" encoding="UTF-8"/>
          <native2ascii src="web/WEB-INF/classes" dest="${build.dir}/web/classes"
                  includes="displaytag_zh*.properties" encoding="UTF-8"/>        
          <generate-database-properties/>
          <copy todir="${build.dir}/web/classes" file="database.properties"/>
      </target>
通过native2ascii将displaytag_zh_CN.properties配置文件同ApplicationResources_zh*.properties一样转换下,就OK了。奇怪Matt Raible在最近AppFuse1.9.4中都没改过来:)

=====

       1.build.xml里面display资源没有国际化处理,也就是没有进行编码,在build.xml进行修改使之进行国际化.
      修改方案:
         <native2ascii src="web/WEB-INF/classes" dest="${build.dir}/web/classes"
             includes="ApplicationResources_zh*.properties" encoding="UTF-8"/>
         <generate-database-properties/>
      改为:
         <native2ascii src="web/WEB-INF/classes" dest="${build.dir}/web/classes"
             includes="*_zh*.properties" encoding="UTF-8"/>
         <generate-database-properties/>

     2.Tomcat 的URLEnCording要设置为UTF8,应为appfuse是以utf-8打包的

     3.就是要对原始ApplicationResources_zh_cn.properties进行ascii编码转换然后丢到classes里面,不要用他ant自动转换过的.奇怪的是appfuse的ant的时候是对文件进行转换了,但是还是有部分中文存在乱码,奇怪ing......不知道是appfuse的疏忽还是什么.继续研究中...我是appfuse-1.9-src的包.但是我手工转了下ant之前的源码,发现乱码问题消失.就这个原因搞了我一个晚上....郁闷
     修改方案:
     native2ascii -encoding UTF-8    ApplicationResources_zh_CN.properties te   (te为转后文件名)
     native2ascii   te   ApplicationResources_zh_CN.properties1 -reverse(转回来 呵呵)

     补充一点,在appfuse的appfuse-1.9-src这个包里的 ApplicationResource...直接打开是中文是乱码,可以采用上面的两条命令把它还原出来.便于我们的开发然后修改ant任务即可.而对于appfuse-jsf-1.9-src来说,它的applicationResource...打开后就是我们可以看懂的中文:).

你可能感兴趣的:(AppFuse中DisplayTag乱码问题的解决(1.9))