﻿<?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-紫蝶∏飛揚↗-文章分类-数据转换</title><link>http://www.blogjava.net/algz/category/34742.html</link><description>我的QQ群:7101519
越来越感觉,除了那点点技术还会什么呢?打工永远都是在打工...汗.这何时何地帮自已打工...</description><language>zh-cn</language><lastBuildDate>Thu, 20 Aug 2009 22:19:47 GMT</lastBuildDate><pubDate>Thu, 20 Aug 2009 22:19:47 GMT</pubDate><ttl>60</ttl><item><title>js 二维数组定义</title><link>http://www.blogjava.net/algz/articles/231505.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Sat, 27 Sep 2008 07:05:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/231505.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/231505.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/231505.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/231505.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/231505.html</trackback:ping><description><![CDATA[1、二维数组声明方式是下面这样的： <br />
&nbsp;&nbsp; var images=new Array();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //先声明一维<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(var i=0;i&lt;10;i++){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //一维长度为10<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; images[i]=new Array();&nbsp;&nbsp;&nbsp; //在声明二维<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var j=0;j&lt;20;j++){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //二维长度为20<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;images[i][j]=1;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
<br />
2、二级数组使用方式应该是这样子的： <br />
alert(images[0][0]); <br />
声明确实比较麻烦，需要先声明第一维，然后循环生成第二维
<img src ="http://www.blogjava.net/algz/aggbug/231505.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2008-09-27 15:05 <a href="http://www.blogjava.net/algz/articles/231505.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS 传送字符串,数组===&gt;JSP</title><link>http://www.blogjava.net/algz/articles/230101.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Sat, 20 Sep 2008 03:02:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/230101.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/230101.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/230101.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/230101.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/230101.html</trackback:ping><description><![CDATA[JS:<br />
ids:[4,5,6]<br />
<br />
JSP:<br />
<span style="color: #99cc00">//专用于传数单个字符串,返回值是字符串</span><br />
String ids=request.getParameter("ids");&nbsp;&nbsp;&nbsp; //["4"]<br />
<span style="color: #99cc00">//专用于传数数组对象,返回值是字符串数组</span><br />
String[] s=request.getParameterValues("ids");&nbsp;&nbsp; //s:["4","5","6"]<br />
<span style="color: #99cc00">//循环将字符串数组对象转换成数组</span><br />
int[] a=new int[s.length];<br />
for(int i=0;i&lt;s.length;i++){<br />
a[i]=Integer.parseInt(s[i]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //a:[4,5,6] <br />
}
<img src ="http://www.blogjava.net/algz/aggbug/230101.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2008-09-20 11:02 <a href="http://www.blogjava.net/algz/articles/230101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>String,int,Integer,char 类型转换</title><link>http://www.blogjava.net/algz/articles/227937.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Tue, 09 Sep 2008 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/227937.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/227937.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/227937.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/227937.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/227937.html</trackback:ping><description><![CDATA[<p><strong>&nbsp;如何将字串 String 转换成整数 int?</strong> <br />
int i = Integer.valueOf(my_str).intValue(); </p>
<p>int i=Integer.parseInt(str); </p>
<p><strong>如何将字串 String 转换成Integer ?</strong><br />
Integer integer=Integer.valueOf(str); </p>
<p><strong>如何将整数 int 转换成字串 String ?</strong> <br />
1.) String s = String.valueOf(i);<br />
&nbsp;<br />
2.) String s = Integer.toString(i); <br />
&nbsp;<br />
3.) String s = "" + i; <br />
<br />
<strong>如何将整数 int 转换成Integer ?</strong> <br />
Integer integer=new Integer(i); </p>
<p><strong>如何将Integer 转换成字串 String ?</strong> <br />
Integer integer＝String </p>
<p><strong>如何将Integer 转换成 int ?</strong> <br />
int num=Integer.intValue(); </p>
<p><strong>如何将String转换成&nbsp; BigDecimal&nbsp; ?</strong> <br />
&nbsp;BigDecimal d_id = new BigDecimal(str); <br />
</p>
<p><br />
<strong>如何将 String 转换成 char ?</strong><br />
char[] ca="123".toCharArray();<br />
<br />
<strong>如何将char转换成String?</strong><br />
String s=ca.toString();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //任何类型都可以采用toString()转换成String类型<br />
<br />
//-----------------日期------------------------- </p>
<p>Calendar calendar=Calendar.getInstance();<br />
&nbsp; int year=calendar.get(Calendar.YEAR);<br />
&nbsp; int month=calendar.get(Calendar.MONTH)+1;<br />
&nbsp; int day=calendar.get(Calendar.DATE); </p>
<p>获取今天的日期字符串<br />
String today=java.text.DateFormat.getDateInstance().format(new java.util.Date());<br />
获取今天的日期<br />
new java.sql.Date(System.currentTimeMillis()) </p>
 <img src ="http://www.blogjava.net/algz/aggbug/227937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2008-09-09 14:18 <a href="http://www.blogjava.net/algz/articles/227937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EXTJS AJAX发送数据到JAVA后台 js-&gt;jsp-&gt;java-&gt;html</title><link>http://www.blogjava.net/algz/articles/213079.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Mon, 07 Jul 2008 09:27:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/213079.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/213079.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/213079.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/213079.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/213079.html</trackback:ping><description><![CDATA[js-&gt;jsp-&gt;java-&gt;html<br />
<span style="color: #008080">(一)js:</span><br />
发送AJAX请求:<br />
&nbsp;&nbsp;&nbsp;&nbsp;Ext.Ajax.request({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method : 'POST',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//(1)<span style="color: #008000">发送方式.'POST'或'GET',一般是'POST'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url: './member_manage.jsp',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//(2)<span style="color: #008000">发送到页面</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; success:function(request){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//(3)<span style="color: #008000">发送成功的回调函数</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var message = request.responseText;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//(4)<span style="color: #008000">取得从JSP文件out.print(...)传来的文本</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.Msg.alert('信息',message);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; //(5)<span style="color: #008000">弹出对话框</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;store.reload();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//(6)<span style="color: #008000">重新读入数据</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//grid.getView().refresh();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;failure:function(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //(7)<span style="color: #008000">发送失败的回调函数</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.Msg.alert("错误", "与后台联系的时候出现了问题");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;params:{command:'save',members: Ext.encode(json)} //(8)<span style="color: #008000">发送名为command和members两参数</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;});<br />
<br />
<span style="color: #008080">(二)jsp:<br />
</span><br />
(1)<span style="color: #008000">取得'POST'参数</span>:&nbsp; String command = request.getParameter("command");<br />
(2)<span style="color: #008000">把参数转化成JSON形式</span>:&nbsp; <br />
JSONArray members = new JSONArray(params);&nbsp; //params= new String(command .getBytes("ISO-8859-1"),"UTF-8");<br />
(3)<span style="color: #008000">把JSON数据传入后台</span>:<br />
<span style="color: #000000">页面中以${对象.属性}调用后台数据</span><br />
Member member = new Member();<br />
&nbsp;member.doSave(members);<br />
out.print("数据保存成功!");<br />
<br />
<span style="color: #008080">(三)java:<br />
</span>(1)<span style="color: #008000">取出JSON对象数组(JSONArray)里的对象( JSONObject )</span> :<br />
JSONObject member = members.optJSONObject(i);<br />
(2)<span style="color: #008000">判断JSON对象里的元素的值</span>:&nbsp; if(member.has("id"))<br />
(3)<span style="color: #008000">取出JSON对象里的元素的值存入数据库</span>:&nbsp; <br />
s = c.prepareStatement("update Members m set m.realName=?,m.sex=?,m.age=?,m.birth=? where m.id=?");<br />
s.setString(1, member.getString("name"));<br />
s.addBatch();<br />
s.executeBatch(); 
<img src ="http://www.blogjava.net/algz/aggbug/213079.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2008-07-07 17:27 <a href="http://www.blogjava.net/algz/articles/213079.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF -&gt;JavaScript 用 A4J 完成前台后台数据交互</title><link>http://www.blogjava.net/algz/articles/207714.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Fri, 13 Jun 2008 08:43:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/207714.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/207714.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/207714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/207714.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/207714.html</trackback:ping><description><![CDATA[<p>HTML:<br />
&nbsp;&lt;script type="text/javascript" src="extjs.js"&gt;&lt;/script&gt;&nbsp;<br />
&lt;f:view&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;div id="MyPageGrid" &gt;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;h:form prependId="false"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&lt;a4j:jsFunction oncomplete="changeFinish(data);" name="processMethod"<br />
&nbsp;&nbsp;&nbsp; data="#{ValueChangeTest.name},#{ValueChangeTest.age}"&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //李四,23<br />
&nbsp;&nbsp; &lt;/a4j:jsFunction&gt;</p>
<p>&lt;a4j:commandButton type="submit" value="good" onclick="changeBegin();" /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //必须用函数先激活JS.如:onclick</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/h:form&gt;<br />
&nbsp;&nbsp;&lt;/f:view&gt;<br />
</p>
<br />
JS:<br />
function changeBegin(){<br />
&nbsp;&nbsp; alert("good");<br />
&nbsp;&nbsp; var _name = "good";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; processMethod();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //调用a4j:jsFunction产生的JS,如上面name值.即为产生一个名为processMethod的JS函数<br />
}<br />
function changeFinish(data){<br />
&nbsp;&nbsp; alert("finish");<br />
&nbsp;&nbsp; alert(data);&nbsp;&nbsp;&nbsp;&nbsp; //李四,23<br />
}<br />
<br />
输出:<br />
依次弹出good/finish/李四,23 对话框.
   <img src ="http://www.blogjava.net/algz/aggbug/207714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2008-06-13 16:43 <a href="http://www.blogjava.net/algz/articles/207714.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF/JSP 与 EXTJS 之间 JSON 互传数据(json-lib 和 org.json 解析工具)</title><link>http://www.blogjava.net/algz/articles/203548.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Wed, 28 May 2008 08:16:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/203548.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/203548.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/203548.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/203548.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/203548.html</trackback:ping><description><![CDATA[<p>一.org.json 解析器 (推荐使用,更适合于对象模型)<br />
概述及例子: <a href="http://code.google.com/p/json-simple/"><u>http://code.google.com/p/json-simple/</u></a><br />
API: <a href="http://code.google.com/p/json-simple/"><u>http://code.google.com/p/json-simple/</u></a><br />
例(测试通过,注意延迟加载问题):<br />
&nbsp;&nbsp;JSONArray&nbsp; jsona=new JSONArray();<br />
&nbsp;&nbsp;JSONObject jsono=new JSONObject();<br />
&nbsp;&nbsp;List&lt;Author&gt; l=authorDAO.findAll();<br />
&nbsp;&nbsp;for(Author a:l){<br />
&nbsp;&nbsp;&nbsp;jsono.put("author_num", a.getAuthorNam());<br />
&nbsp;&nbsp;&nbsp;jsono.put("author_nam", a.getAuthorNum());<br />
&nbsp;&nbsp;&nbsp;jsono.put("author_sex", a.getAuthorSex());<br />
&nbsp;&nbsp;&nbsp;jsono.put("author_level", a.getLevel().getLevelNam());<br />
&nbsp;&nbsp;&nbsp;jsono.put("author_department", a.getAuthorDepartment());<br />
&nbsp;&nbsp;&nbsp;jsona.add(jsono.clone());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //jsono.clone()返回实例对象;jsono仅仅只是个指针<br />
&nbsp;&nbsp;&nbsp;jsono.clear();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //必须清除内容以备下次调用.<br />
&nbsp;&nbsp;}<br />
<br />
二.json-lib 解析器<br />
(1)所需依赖的类文件</p>
<p>Json-lib requires (at least) the following dependencies in your classpath: </p>
<ul>
    <li>jakarta commons-lang 2.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //appach网站下载最新的
    <li>jakarta commons-beanutils 1.7.0&nbsp;&nbsp;&nbsp;&nbsp; //appach网站下载最新的
    <li>jakarta commons-collections 3.2&nbsp;&nbsp;&nbsp;&nbsp; //appach网站下载最新的
    <li>jakarta commons-logging 1.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //appach网站下载最新的
    <li>ezmorph 1.0.4 </li>
</ul>
<p>详见: http://json-lib.sourceforge.net/<br />
<br />
(2)下载JSON-LIB-2.2.1,并查找 ezmorph 1.0.4 文件</p>
https://sourceforge.net/project/showfiles.php?group_id=171425<br />
<br />
(3)举例:<br />
<p>&nbsp;</p>
<div style="border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; padding-bottom: 4px; background-color: rgb(238,238,238); padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; padding-top: 4px"><span style="color: rgb(0,128,128)">&nbsp;1</span><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: rgb(0,0,255)">import</span><span style="color: rgb(0,0,0)">&nbsp;net.sf.json.JSONArray;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;2</span><span style="color: rgb(0,0,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
</span><span style="color: rgb(0,128,128)">&nbsp;3</span><span style="color: rgb(0,0,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><br />
</span><span style="color: rgb(0,128,128)">&nbsp;4</span><span style="color: rgb(0,0,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
</span><span style="color: rgb(0,128,128)">&nbsp;5</span><span style="color: rgb(0,0,0)"><img id="Codehighlighter1_77_93_Open_Image" onclick="this.style.display='none'; Codehighlighter1_77_93_Open_Text.style.display='none'; Codehighlighter1_77_93_Closed_Image.style.display='inline'; Codehighlighter1_77_93_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_77_93_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_77_93_Closed_Text.style.display='none'; Codehighlighter1_77_93_Open_Image.style.display='inline'; Codehighlighter1_77_93_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: rgb(0,0,255)">boolean</span><span style="color: rgb(0,0,0)">[]&nbsp;boolArray&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">new</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">boolean</span><span style="color: rgb(0,0,0)">[]</span><span style="border-bottom: rgb(128,128,128) 1px solid; border-left: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255); display: none; border-top: rgb(128,128,128) 1px solid; border-right: rgb(128,128,128) 1px solid" id="Codehighlighter1_77_93_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_77_93_Open_Text"><span style="color: rgb(0,0,0)">{</span><span style="color: rgb(0,0,255)">true</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,255)">false</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,255)">true</span><span style="color: rgb(0,0,0)">}</span></span><span style="color: rgb(0,0,0)">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;6</span><span style="color: rgb(0,0,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSONArray&nbsp;jsonArray1&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;JSONArray.fromObject(&nbsp;boolArray&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;7</span><span style="color: rgb(0,0,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;jsonArray1&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;8</span><span style="color: rgb(0,0,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">//</span><span style="color: rgb(0,128,0)">&nbsp;prints&nbsp;[true,false,true]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;9</span><span style="color: rgb(0,128,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">10</span><span style="color: rgb(0,0,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;list&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">new</span><span style="color: rgb(0,0,0)">&nbsp;ArrayList();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">11</span><span style="color: rgb(0,0,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(&nbsp;</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">first</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">12</span><span style="color: rgb(0,0,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(&nbsp;</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">second</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">13</span><span style="color: rgb(0,0,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSONArray&nbsp;jsonArray2&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;JSONArray.fromObject(&nbsp;list&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">14</span><span style="color: rgb(0,0,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;jsonArray2&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">15</span><span style="color: rgb(0,0,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">//</span><span style="color: rgb(0,128,0)">&nbsp;prints&nbsp;["first","second"]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)"><br />
</span><span style="color: rgb(0,128,128)">16</span><span style="color: rgb(0,128,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">17</span><span style="color: rgb(0,0,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSONArray&nbsp;jsonArray3&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;JSONArray.fromObject(&nbsp;</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">['json','is','easy']</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">18</span><span style="color: rgb(0,0,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;jsonArray3&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0,128,128)">19</span><span style="color: rgb(0,0,0)"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">//</span><span style="color: rgb(0,128,0)">&nbsp;prints&nbsp;["json","is","easy"]&nbsp;&nbsp;</span></div>
<br />
<img src ="http://www.blogjava.net/algz/aggbug/203548.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2008-05-28 16:16 <a href="http://www.blogjava.net/algz/articles/203548.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]JSF中文输入乱码问题解决方法</title><link>http://www.blogjava.net/algz/articles/201833.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Wed, 21 May 2008 01:50:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/201833.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/201833.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/201833.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/201833.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/201833.html</trackback:ping><description><![CDATA[<br />
<p>以下总结这段时间以来遇到的中文问题汇集：</p>
<p>注：以下&#8220;后台&#8221;字眼，相当于在servlet内，或者某一个类内，或者struts的action内。</p>
<p>1.一字符串在后台用system.out.println输出正常，保存在session里到JSP页面显示乱码</p>
<p>最初的乱码问题.</p>
<p>原因：似乎是默认的JSP页面采用8859-1编码，显示不了中文。</p>
<p>解决：在JSP页面上方加个&lt;%@ page contentType="text/html;charset=utf-8"%&gt;解决。当然，也可以用charaset="gbk"，"gb2312"之类的编码，不过建议还是用utf-8，详细原因去看看jdon板桥里人的那篇《中文乱码终极解决方法》。</p>
<p>&nbsp;*****************************************************************************</p>
<p><span style="color: #339966">2.提交表单，在后台读取表单内容发现乱码</span></p>
<p>原因：request的默认编码问题，具体不甚清楚，没看过tomcat源代码。。。</p>
<p>解决：写个fileter，具体如下：</p>
<p>package operator;</p>
<p>import java.io.IOException;</p>
<p>import javax.servlet.Filter;<br />
import javax.servlet.FilterChain;<br />
import javax.servlet.FilterConfig;<br />
import javax.servlet.ServletException;<br />
import javax.servlet.ServletRequest;<br />
import javax.servlet.ServletResponse;</p>
<p>public class SetCharacterEncodingFilter implements Filter {<br />
&nbsp;protected String encoding = null;</p>
<p>&nbsp;protected FilterConfig filterConfig = null;</p>
<p>&nbsp;public void init(FilterConfig filterConfig) throws ServletException {<br />
&nbsp;&nbsp;this.filterConfig = filterConfig;<br />
&nbsp;&nbsp;this.encoding = filterConfig.getInitParameter("encoding");<br />
&nbsp;}</p>
<p>&nbsp;public void doFilter(ServletRequest request, ServletResponse response,<br />
&nbsp;&nbsp;&nbsp;FilterChain chain) throws IOException, ServletException {<br />
<br />
&nbsp;&nbsp;request.setCharacterEncoding("UTF-8");<br />
&nbsp;&nbsp;chain.doFilter(request, response);<br />
&nbsp;}</p>
<p>&nbsp;public void destroy() {<br />
<br />
&nbsp;&nbsp;this.encoding = null;<br />
&nbsp;&nbsp;this.filterConfig = null;<br />
&nbsp;}</p>
<p>&nbsp;protected String selectEncoding(ServletRequest request) {<br />
&nbsp;&nbsp;return (this.encoding);<br />
&nbsp;}<br />
}<br />
</p>
<p>web.xml配置：</p>
<p>在servlet-mapping后加入以下内容：</p>
<p>&nbsp;&lt;filter&gt;<br />
&nbsp;&nbsp;&lt;filter-name&gt;Set Character Encoding&lt;/filter-name&gt;<br />
&nbsp;&nbsp;&lt;filter-class&gt;operator.SetCharacterEncodingFilter&lt;/filter-class&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;param-name&gt;encoding&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;param-value&gt;UTF-8&lt;/param-value&gt;<br />
&nbsp;&nbsp;&lt;/init-param&gt;<br />
&nbsp;&lt;/filter&gt;</p>
<p>&nbsp;&lt;filter-mapping&gt;<br />
&nbsp;&nbsp;&lt;filter-name&gt;Set Character Encoding&lt;/filter-name&gt;<br />
&nbsp;&nbsp;&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />
&nbsp;&lt;/filter-mapping&gt;<br />
***********************************************************************<br />
</p>
<p>3.下载时，&#8220;另保存为&#8221;默认名字显示乱码</p>
<p>原因：不清楚。。。</p>
<p>在tomcat安装目录的config/sever.xml内的</p>
<p>&nbsp;&nbsp;&nbsp; &lt;Connector<br />
port="80"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxHttpHeaderSize="8192"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxThreads="150" minSpareThreads="25" maxSpareThreads="75"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false" redirectPort="8443" acceptCount="100"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" /&gt;</p>
<p>加进最后的&#8220;URIEncoding="UTF8"</p>
<p>4.在后台用system.out.println()输出正常，保存到mysql数据库EMS显示乱码，读回数据也是乱码</p>
<p>原因：mysql默认采用的是latin1编码；</p>
<p>解决：创建表的时候要修改成utf-8。如果已存在表，用EMS的话，直接修改table-property里面的default charater set就可以了，其他管理工具不知道，没用过。</p>
<p>5.在后台用system.out.println()输出正常，保存到mysql数据库EMS显示乱码，读回数据时——居然正常了，直接往数据库里插入正常的中文，读出——居然乱码了；</p>
<p>原因：EMS管理工具的默认显示问题</p>
<p>解决：register数据库时，client default&nbsp; charater set改utf-8</p>
<p>注：这该死的问题困扰了我好长一段时间，一直以为我程序有问题，检查了N久，发现居然是工具显示问题。。</p>
<p>6.COMMON－UPLOAD 上传中文名文件时，显示乱码</p>
<p>原因：common-upload组件默认采用系统的编码，而页面传过来的请求采用UTF-8编码。</p>
<p>我的系统是简体中文WINDOWS 2K3，系统编码是GBK，当页面请求过来时，UPLOAD就把UTF8编码的流直接按GBK编码了。。。如果用new String(oldStr.getBytes("gbk"),"utf8)可以发现，部分中文可以还原回去。</p>
<p>解决：网上的说法五花八门，甚至有归罪于这是UPLOAD的BUG，其实只要在</p>
<p>&nbsp;DiskFileUpload fu = new DiskFileUpload();</p>
<p>后加一句：</p>
<p>fu.setHeaderEncoding("utf8");</p>
<p>就解决了。。。</p>
<p>看来有时候还是直接读英文帮助手册来得正确。。。</p>
<br />
<br />
<br />
问题描述：<br />
在inputtext中输入中文，然后在输出，显示为乱码。<br />
<br />
解决方法：<br />
1、自定义转器<br />
package util;<br />
import java.util.Map;<br />
import javax.faces.component.UIComponent;<br />
import javax.faces.convert.Converter;<br />
import javax.faces.context.FacesContext;<br />
import javax.faces.convert.ConverterException;
<p>public class StringConverter implements Converter {<br />
&nbsp;public Object getAsObject(FacesContext context, UIComponent component,<br />
&nbsp;&nbsp;&nbsp;String newValues) throws ConverterException {<br />
&nbsp;&nbsp;String newstr = "";<br />
&nbsp;&nbsp;if (newValues == null) {<br />
&nbsp;&nbsp;&nbsp;newValues = "";<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;byte[] byte1 = null;<br />
&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;byte1 = newValues.getBytes("ISO-8859-1");<br />
&nbsp;&nbsp;&nbsp;newstr = new String(byte1, "GB2312");<br />
&nbsp;&nbsp;&nbsp;UIInput input=(UIInput)component;//<br />
&nbsp;&nbsp;&nbsp;input.setSubmittedValue(newstr);<br />
&nbsp;&nbsp;} catch (UnsupportedEncodingException e) {<br />
&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;return newstr;</p>
<p>&nbsp;}</p>
<p>&nbsp;public String getAsString(FacesContext context, UIComponent component,<br />
&nbsp;&nbsp;&nbsp;Object Values) throws ConverterException {&nbsp;<br />
&nbsp;&nbsp;return (String) Values;<br />
&nbsp;}<br />
}</p>
<p>2、注册转换器<br />
faces-config.xml片段<br />
&lt;converter&gt;<br />
&nbsp; &lt;converter-id&gt;stringconverter&lt;/converter-id&gt;<br />
&nbsp; &lt;converter-class&gt;util.StringConverter&lt;/converter-class&gt;<br />
&lt;/converter&gt;</p>
<p>3、在页面使用转换器<br />
&lt;h:inputText id="account" value="#{util.account}" required="true" styleClass="input" &gt;&nbsp;<br />
&nbsp;&lt;f:converter converterId="stringconverter"/&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--注:这里不是EL表达式--&gt;</p>
&lt;/h:inputText&gt;<br />
<br />
<br />
<br />
<br />
<br />
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JSF估计是天生就是这个毛病，凡是有jsf标签生成的html代码中有中文的（指从 backbean中提取出来的），在html源代码中回出现类似：&amp;<span class="entity">#38632;</span>&amp;<span class="entity">#28404; 这种&#8220;汉字内码&#8221;，比如jsf的代码如下：<br />
&lt;f:view&gt;<br />
&nbsp;&nbsp; &lt;h:outputText value="#{testBean.testValue}"&gt;&lt;/h:outputText&gt;<br />
&nbsp;&nbsp; &lt;br&gt;<br />
&nbsp;&nbsp; 哈哈<br />
&lt;/f:view&gt;<br />
&lt;br&gt;呵呵</span></p>
<p><span class="entity">浏览器显示如下：<br />
雨滴雨滴2 <br />
哈哈 <br />
呵呵</span></p>
<p><span class="entity">而查看html源代码如下：<br />
</span></p>
<pre>&amp;<span class="entity">#38632;</span>&amp;<span class="entity">#28404;</span>&amp;<span class="entity">#38632;</span>&amp;<span class="entity">#28404;</span>2
&lt;<span class="start-tag">br</span>&gt;
哈哈
&lt;<span class="start-tag">br</span>&gt;呵呵</pre>
<p>我们发现用jsf标签出来的有内码，而不是jsf标签的就没事。（网页服务器编码等都是UTF-8统一的）。</p>
<p>那么有什么办法呢？</p>
<p>第一个方法，写一个自定义的Converter，在jsf中有这种功能，但是我测试了写了一个converter，但是效果令我失望，因为我发现jsf的内在逻辑把汉字变成内码的地方在converter以后，我在converter中添加什么东西，在html源代码中还是内码。于是放弃</p>
<p>第二种方法是在写个Servlet的Filter过滤器，放到web.xml中，但是由于汉字内码&amp;<span class="entity">#38632;需要去掉前后坠，然后把这几个数字变成char，在变成String。每个字都用这种方法变回来，这样本身效率回很低，而且一个html文档中用jsf显示的内容占有比率有多有少，如果没有标签的也是用这个过滤器一个字一个字取解析，那么效率就更不敢恭维了。虽然这种方法一定可行（因为过滤器可以到输出的最后一步），但是由于效率问题，我没有取试。</span></p>
<p><span class="entity">第三种方法是我自己研究出来的，通过FacesContext类来作，方法如下：<br />
首先，写一个类<br />
public class Converter {<br />
public static void process(String str){<br />
&nbsp;&nbsp; FacesContext fc=FacesContext.getCurrentInstance();<br />
&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp; fc.getResponseWriter().write(str);<br />
&nbsp;&nbsp; } catch (IOException e) {<br />
&nbsp;&nbsp;&nbsp; // TODO Auto-generated catch block<br />
&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp; }<br />
}<br />
}</span><br />
然后在每个backbean中需要getXXX方法中返回是String的方法中修改如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把 return XXX&nbsp;&nbsp; 改为&nbsp;&nbsp; return ""<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在return前面，也就是方法的最后一步，添加Converter.process(testValue)，这个testValue是你要return的变量<br />
ok，就这么简单^_^。。。</p>
<p>在网上找了一天没找到合理解决方法，用这个方法终于解决了。。</p>
<img src ="http://www.blogjava.net/algz/aggbug/201833.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2008-05-21 09:50 <a href="http://www.blogjava.net/algz/articles/201833.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>