解决ValueList自动排序的乱码问题

一年多没整过技术文章了吧………今天下午调整了一下原来的代码,解决了ValueList自动排序的乱码问题。

其实如果你页面上全部都用UTF-8,是不会出现ValueList自动排序的乱码的,因为ValueList默认是使用UTF-8进行编码。但是我原来写的那个应用太小,而且也不会有i18n的需求,没心情全部把汉字写到resource文件中,那样比较繁琐,——我可是又当程序员又当美工的。所以当时是全部页面都用了GBK编码。

另外先提一下另一个需要特别注意的地方:如果使用GBK编码,那么请一起把Tomcat的server.xml文件一起改掉,在“connector”element后面加一个attribute:“URIEncoding=’GBK’”,否则默认会是UTF-8。这里不把编码改掉的话,那么你所有的GET查询都可能出现乱码。

好了,现在说ValueList这里容易出现乱码的问题。ValueList一个比较方便的功能就是允许对属性进行自动排序,而这个排序是通过GET方式完成的。然后我发现我原来写的那个东西,查中文字很正常,不会有乱码,但是查了中文字以后再进行自动排序就不行了,表单上显示属性由中文字变为乱码,很明显,页面和GET编码都是GBK,那么只有可能是ValueList的自动排序的URL的编码有问题。

相信有经验的程序员不会花太多时间,问题很快定位在LinkEncoder,不过这是一个接口,默认实现是DefaultLinkEncoder,里面有一行代码:private String encoding = “UTF-8″,以及getter和setter,一看到这个地球人就都知道了,Spring配置一下“encoding”属性为“GBK”就行了。

打开ValueList配置文件,先用Spring把DefaultLinkEncoder这个bean的“encoding”属性写为“GBK”,再在什么“classicLook”、“simpleLook”、“microsoftLook”啊,反正是xxxLook这些bean下面都加一行,然后就OK了。记住在所有的xxxLook下面都加这一行,我开始就是只在“classicLook”下面加了,结果我页面上实际使用的是“simpleLook”,搞得我还以为哪里还有bug呢。

评论联播

Your email address will not be published. Required fields are marked *