siteMesh的一个中文bug

       经前同事介绍,前几天一直在试用siteMesh,在试用过程中发现一些不想被装饰的页面出现页面显示不全的问题。页面上出现一小段HTML标签。提示异常为java.lang.IllegalStateException 大致意思是试图写多少多少字节却只写入了多少多少字节。非常郁闷。看了源代码。发现应该是com.opensymphony.module.sitemesh.filter.PageFilter包里的

1 response.setContentLength(page.getContentLength()); 

没有考虑中文的情况。解决方案是将会出现的中文情况考虑进去。

1 int originalLength = page.getContentLength();//原来的长度
2 int bodyCNLenght = page.getBody().getBytes().length-page.getBody().length();//内容处理中文长度
3 int titleCNLength = page.getTitle().getBytes().length-page.getTitle().length();//title处理中文长度
4 int javascriptCNOfhead = page instanceof FastPage?  ((FastPage)page).getHead().getBytes().length-((FastPage)page).getHead().length()):0 ;//head的长度,因为javascript中可能包括中文
5 
6 response.setContentLength(originalLength+bodyCNLenght+titleCNLength+javascriptCNOfhead);

这个解决方案是从网上搜索出来的,我想应该还有更好的解决方法。

posted on 2006-07-06 23:50 JavaVM 阅读(1148) 评论(0)  编辑  收藏 所属分类: WebWork & Struts2


只有注册用户登录后才能发表评论。


网站导航:
 
<2006年7月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

常用链接

留言簿(1)

我参与的团队

随笔分类(2)

随笔档案(3)

收藏夹(3)

JAVA技术论坛

我的好友

搜索

最新评论

阅读排行榜

评论排行榜