﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-JavaVM-随笔分类-表现层</title><link>http://www.blogjava.net/JavaVM/category/12849.html</link><description>不闻不若闻之，闻之不若见之。&lt;BR&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
见之不若知之，知之不若行之。</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 06:49:50 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 06:49:50 GMT</pubDate><ttl>60</ttl><item><title>siteMesh的一个中文bug</title><link>http://www.blogjava.net/JavaVM/archive/2006/07/06/57053.html</link><dc:creator>JavaVM</dc:creator><author>JavaVM</author><pubDate>Thu, 06 Jul 2006 15:50:00 GMT</pubDate><guid>http://www.blogjava.net/JavaVM/archive/2006/07/06/57053.html</guid><wfw:comment>http://www.blogjava.net/JavaVM/comments/57053.html</wfw:comment><comments>http://www.blogjava.net/JavaVM/archive/2006/07/06/57053.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/JavaVM/comments/commentRss/57053.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/JavaVM/services/trackbacks/57053.html</trackback:ping><description><![CDATA[
		<font size="2">       经前同事介绍，前几天一直在试用siteMesh，在试用过程中发现一些不想被装饰的页面出现页面显示不全的问题。页面上出现一小段HTML标签。提示异常为java.lang.IllegalStateException 大致意思是试图写多少多少字节却只写入了多少多少字节。非常郁闷。看了源代码。发现应该是com.opensymphony.module.sitemesh.filter.PageFilter包里的<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span> <span style="COLOR: #000000">response.setContentLength(page.getContentLength()); </span></div></font>
		<br />
		<font size="2">没有考虑中文的情况。解决方案是将会出现的中文情况考虑进去。<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span> <span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> originalLength </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> page.getContentLength();</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">原来的长度</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">2</span> <span style="COLOR: #008000"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> bodyCNLenght </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> page.getBody().getBytes().length</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">page.getBody().length();</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">内容处理中文长度</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">3</span> <span style="COLOR: #008000"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> titleCNLength </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> page.getTitle().getBytes().length</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">page.getTitle().length();</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">title处理中文长度</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">4</span> <span style="COLOR: #008000"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> javascriptCNOfhead </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> page </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> FastPage</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">  ((FastPage)page).getHead().getBytes().length</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">((FastPage)page).getHead().length()):</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"> ;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">head的长度，因为javascript中可能包括中文</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">5</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">6</span> <span style="COLOR: #000000">response.setContentLength(originalLength</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">bodyCNLenght</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">titleCNLength</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">javascriptCNOfhead);</span></div><br />这个解决方案是从网上搜索出来的，我想应该还有更好的解决方法。<br /><br /></font>
<img src ="http://www.blogjava.net/JavaVM/aggbug/57053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/JavaVM/" target="_blank">JavaVM</a> 2006-07-06 23:50 <a href="http://www.blogjava.net/JavaVM/archive/2006/07/06/57053.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>