Appfuse中文乱码解决

    最近我一直在用appfuse,用的是2.1.0-M2版本,在使用过程中,我发现了几个小问题,其中最为头痛的是中文显示乱码的问题。下面我就来说说我的解决方法。(当然,在这之前已经google了很多篇相关的文章,这里就不一一列举了)

    首先来看看创建项目:

mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-struts-archetype -DarchetypeVersion=2.1.0-M2 -DgroupId=com.mycompany -DartifactId=myproject

    这里注意,创建的项目目录有点问题,就是src\main\java\yourpackage\webapp\webapp,这里在webapp目录下仍然有一个webapp,这是错误的,需要把这个webapp\webapp修改为webapp即可。同样在test目录下也是这样。

    修改完数据库选项之后,运行:

mvn jetty:run-war

    编译、打包、测试、部署一通之后,一切ok,在浏览器上打http://localhost:8080,一切正常。

    可是在Administration页面看到了乱码:

appfuse中文乱码.PNG

 

        根据http://wenson.javaeye.com/blog/138633这篇文章的解决方案,是因为pom.xml里对资源文件displaytag_zh_CN.properties没有进行正确的编码就直接copy使用了,我采用他的方法,用

mvn appfuse:full-source

采用full-source的方式,然后在pom.xml里进行修改

<plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>native2ascii-maven-plugin</artifactId>
                <version>1.0-alpha-1</version>
                <configuration>
                    <dest>target/classes</dest>
                    <src>src/main/resources</src>
                </configuration>
                <executions>
                    <execution>
                        <id>native2ascii-utf8</id>
                        <goals>
                            <goal>native2ascii</goal>
                        </goals>
                        <configuration>
                            <encoding>UTF8</encoding>
                            <includes>ApplicationResources_ko.properties,
                                ApplicationResources_no.properties,
                                ApplicationResources_tr.properties,                                
                                *_zh*.properties</includes>
                        </configuration>
                    </execution>
                    <execution>
                        <id>native2ascii-8859_1</id>
                        <goals>
                            <goal>native2ascii</goal>
                        </goals>
                        <configuration>
                            <encoding>8859_1</encoding>
                            <includes>ApplicationResources_de.properties,
                                ApplicationResources_fr.properties,
                                ApplicationResources_nl.properties,
                                ApplicationResources_pt*.properties</includes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

以及:

<resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>ApplicationResources_de.properties</exclude>
                    <exclude>ApplicationResources_fr.properties</exclude>
                    <exclude>ApplicationResources_ko.properties</exclude>
                    <exclude>ApplicationResources_nl.properties</exclude>
                    <exclude>ApplicationResources_no.properties</exclude>
                    <exclude>ApplicationResources_pt*.properties</exclude>
                    <exclude>ApplicationResources_tr.properties</exclude>
                    <exclude>*_zh*.properties</exclude>
                    <exclude>applicationContext-resources.xml</exclude>
                    <exclude>struts.xml</exclude>
                </excludes>
                <filtering>true</filtering>
            </resource>

然后重新运行,结果还是没有解决。

在eclipse里手工打开displaytag_zh_CN.properties这个文件,发现是用ISO-8859-1来encoding的,换成UTF-8方式打开,发现全部是乱码。用UTF-8来保存,然后再运行,一切都正常了。

appfuse正常显示中文.PNG

posted @ 2011-01-25 11:24  lettoo  阅读(2380)  评论(0编辑  收藏  举报