﻿<?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-Enjoy yourself,and don't care about others' thinking!-随笔分类-JSF</title><link>http://www.blogjava.net/TiGERTiAN/category/34900.html</link><description>----TiGERTiAN</description><language>zh-cn</language><lastBuildDate>Sun, 27 Dec 2009 19:35:10 GMT</lastBuildDate><pubDate>Sun, 27 Dec 2009 19:35:10 GMT</pubDate><ttl>60</ttl><item><title>jQuery操作JSF中的Checkbox树</title><link>http://www.blogjava.net/TiGERTiAN/archive/2009/12/27/307463.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Sun, 27 Dec 2009 14:52:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2009/12/27/307463.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/307463.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2009/12/27/307463.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/307463.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/307463.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 下面的代码是，当选中父节点，则子节点全选；选中任意一个子节点，则选中父节点jQuery.noConflict();//与JSF搭配需要这句话，不然会有冲突&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery(document).ready(function()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nb...&nbsp;&nbsp;<a href='http://www.blogjava.net/TiGERTiAN/archive/2009/12/27/307463.html'>阅读全文</a><img src ="http://www.blogjava.net/TiGERTiAN/aggbug/307463.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2009-12-27 22:52 <a href="http://www.blogjava.net/TiGERTiAN/archive/2009/12/27/307463.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyFaces中SelectOneRadio的一个bug</title><link>http://www.blogjava.net/TiGERTiAN/archive/2009/12/03/304691.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Thu, 03 Dec 2009 12:34:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2009/12/03/304691.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/304691.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2009/12/03/304691.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/304691.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/304691.html</trackback:ping><description><![CDATA[今天开发的测试的时候碰到一个问题，就是用Myfaces的SelectOneRadio空间的时候，页面第一次展现没问题，当我使用上一步切换tab再下一步的时候就抛出了异常，异常如下：<br />
<pre>Caused by: javax.faces.convert.ConverterException: java.lang.ClassCastException: org.apache.myfaces.shared_impl.renderkit.RendererUtils$1<br />
cannot be cast to java.lang.Boolean<br />
at javax.faces.convert.BooleanConverter.getAsString(BooleanConverter.java:91)<br />
at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:630)<br />
at org.apache.myfaces.shared_impl.renderkit.html.HtmlRadioRendererBase.encodeEnd(HtmlRadioRendererBase.java:91)<br />
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:624)<br />
... 110 more<br />
Caused by: java.lang.ClassCastException: org.apache.myfaces.shared_impl.renderkit.RendererUtils$1<br />
cannot be cast to java.lang.Boolean<br />
at javax.faces.convert.BooleanConverter.getAsString(BooleanConverter.java:87)<br />
... 113 more<br />
<br />
后来在国外网站上面找到了问题所在：<br />
<br />
Hello,<br />
<br />
the problem still exists in MyFaces Core 1.2.6.<br />
<br />
I have a selectOneMenu with a value binding to a boolean property.<br />
<br />
In the boolean converter the ClassCastException still occurs.<br />
<br />
...<br />
Caused by: javax.faces.convert.ConverterException: java.lang.ClassCastException: org.apache.myfaces.shared_impl.renderkit.RendererUtils$1<br />
cannot be cast to java.lang.Boolean<br />
at javax.faces.convert.BooleanConverter.getAsString(BooleanConverter.java:91)<br />
at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:630)<br />
at org.apache.myfaces.shared_impl.renderkit.html.HtmlRadioRendererBase.encodeEnd(HtmlRadioRendererBase.java:91)<br />
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:624)<br />
... 110 more<br />
Caused by: java.lang.ClassCastException: org.apache.myfaces.shared_impl.renderkit.RendererUtils$1<br />
cannot be cast to java.lang.Boolean<br />
at javax.faces.convert.BooleanConverter.getAsString(BooleanConverter.java:87)<br />
... 113 more<br />
<br />
In RendererUtils there are some tests that value equals NOTHING. However the equals method<br />
of the NOTHING-Serializable isn't overriden. Therefore it has no effect.<br />
<br />
Overriding the equals method as in the patch of paul works.<br />
<br />
<br />
有些东西没有实现，导致了这个问题。这个可能需要你自己简单实现一下源文件然后编译成库文件了，感觉麻烦就换成了SelectOneMenu了。<br />
后面有时间再看了<br />
<br />
</pre>
<br />
<br />
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/304691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2009-12-03 20:34 <a href="http://www.blogjava.net/TiGERTiAN/archive/2009/12/03/304691.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[JSF]手动初始化选择控件 页面所有action均失效的问题</title><link>http://www.blogjava.net/TiGERTiAN/archive/2009/11/18/302754.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Wed, 18 Nov 2009 01:02:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2009/11/18/302754.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/302754.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2009/11/18/302754.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/302754.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/302754.html</trackback:ping><description><![CDATA[最近写了一个JSF的动态控件生成框架给项目组使用。昨天有个同事在使用的过程中遇到一个问题，就是我生成的带AjaxSupport的动态控件在调用他自己写的方法之后出现了整个页面的action均无效的情况，现象就是，两个级联下拉，当地一个下拉选项改变时，触发他写的方法，他改变第二个下拉，但是当重复该操作之后就无效了，也没有错误和异常，代码如下： <br />
<br />
同事代码：<br />
<div>
<div style="padding-right: 5px; padding-left: 4px; font-size: 13px; border-left-color: #cccccc; padding-bottom: 4px; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;bignessDangeValueChangeListener(ActionEvent&nbsp;e)&nbsp;{<br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">System.out.println(e.getComponent().getParent().getChildCount());</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.ajax4jsf.component.html.HtmlAjaxSupport&nbsp;ajaxSupport&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(org.ajax4jsf.component.html.HtmlAjaxSupport)e.getComponent();<br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HtmlSelectOneMenu&nbsp;parent&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(HtmlSelectOneMenu)ajaxSupport.getParent();<br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Short&nbsp;value&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(Short)parent.getValue();<br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;idDetails&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;parent.getId().split(</span><span style="color: #000000">"</span><span style="color: #000000">_</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;controlId&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StringBuffer();<br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;controlId.append(idDetails[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(WebUtil.PROPS_FILE_NAME_TRASH_DISCHARGE.equals(idDetails[</span><span style="color: #000000">0</span><span style="color: #000000">]))&nbsp;{<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;idDetails[</span><span style="color: #000000">1</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">hazardousSubstance</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">配置文件中配置的二级联动的二级控件的name字段</span><span style="color: #008000"><br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;idDetails.length;i</span><span style="color: #000000">++</span><span style="color: #000000">){<br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;controlId.append(</span><span style="color: #000000">"</span><span style="color: #000000">_</span><span style="color: #000000">"</span><span style="color: #000000">).append(idDetails[i]);<br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ajaxSupport.setReRender(controlId.toString());<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">BignessDangerInfo</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;list&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Common.getBignessDangerInfoByObjType(value);<br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;labelList&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayList</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">();<br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">Integer</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;valueList&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayList</span><span style="color: #000000">&lt;</span><span style="color: #000000">Integer</span><span style="color: #000000">&gt;</span><span style="color: #000000">();<br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(BignessDangerInfo&nbsp;bdi&nbsp;:&nbsp;list)&nbsp;{<br />
</span><span style="color: #008080">23</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;labelList.add(bdi.getObjectName());<br />
</span><span style="color: #008080">24</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valueList.add(String.valueOf(bdi.getRecuid()));<br />
</span><span style="color: #008080">25</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">26</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">27</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">28</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">29</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(value&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;value&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;value&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;value&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">4</span><span style="color: #000000">)&nbsp;{<br />
</span><span style="color: #008080">30</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DynamicControlFactory.initSelectValues(e,&nbsp;idDetails[</span><span style="color: #000000">1</span><span style="color: #000000">],&nbsp;labelList,&nbsp;valueList);<br />
</span><span style="color: #008080">31</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />
</span><span style="color: #008080">32</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">List</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">&nbsp;listClear&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayList</span><span style="color: #000000">&lt;</span><span style="color: #000000">List</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">();<br />
</span><span style="color: #008080">33</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;temp1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayList</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">();<br />
</span><span style="color: #008080">34</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;temp2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayList</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">();<br />
</span><span style="color: #008080">35</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp1.add(</span><span style="color: #000000">"</span><span style="color: #000000">-1</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">36</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp2.add(</span><span style="color: #000000">"</span><span style="color: #000000">--请选择--</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">37</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listClear.add(temp1);<br />
</span><span style="color: #008080">38</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listClear.add(temp2);<br />
</span><span style="color: #008080">39</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DynamicControlFactory.initSelectValues(e,&nbsp;idDetails[</span><span style="color: #000000">1</span><span style="color: #000000">],&nbsp;listClear.get(</span><span style="color: #000000">1</span><span style="color: #000000">),&nbsp;listClear.get(</span><span style="color: #000000">0</span><span style="color: #000000">));<br />
</span><span style="color: #008080">40</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">41</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
</div>
<br />
initSelectValues的相关代码：<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">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;initSelectValues(ActionEvent&nbsp;e,&nbsp;String&nbsp;col,&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;labels,&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;values)<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img id="Codehighlighter1_106_604_Open_Image" onclick="this.style.display='none'; Codehighlighter1_106_604_Open_Text.style.display='none'; Codehighlighter1_106_604_Closed_Image.style.display='inline'; Codehighlighter1_106_604_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_106_604_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_106_604_Closed_Text.style.display='none'; Codehighlighter1_106_604_Open_Image.style.display='inline'; Codehighlighter1_106_604_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_106_604_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_106_604_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img id="Codehighlighter1_114_549_Open_Image" onclick="this.style.display='none'; Codehighlighter1_114_549_Open_Text.style.display='none'; Codehighlighter1_114_549_Closed_Image.style.display='inline'; Codehighlighter1_114_549_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_114_549_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_114_549_Closed_Text.style.display='none'; Codehighlighter1_114_549_Open_Image.style.display='inline'; Codehighlighter1_114_549_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_114_549_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_114_549_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;parms&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;e.getComponent().getParent().getId().split(</span><span style="color: #000000">"</span><span style="color: #000000">_</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DynamicControlObject&nbsp;dco&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getControlObjects().get(parms[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;colList&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;dco.getColNameList();<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;prefix&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;dco.getFormName()&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;parms[</span><span style="color: #000000">0</span><span style="color: #000000">];<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map&nbsp;cos&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HashMap();<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;rowIdx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;parms[parms.length&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">];<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initSelectOneComponent(findComponent(prefix&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">_</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;col&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">_1</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">_</span><span style="color: #000000">"</span><span style="color: #000000"><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;rowIdx),&nbsp;&nbsp;values,&nbsp;labels,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img id="Codehighlighter1_572_601_Open_Image" onclick="this.style.display='none'; Codehighlighter1_572_601_Open_Text.style.display='none'; Codehighlighter1_572_601_Closed_Image.style.display='inline'; Codehighlighter1_572_601_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_572_601_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_572_601_Closed_Text.style.display='none'; Codehighlighter1_572_601_Open_Image.style.display='inline'; Codehighlighter1_572_601_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;ex)&nbsp;</span><span id="Codehighlighter1_572_601_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_572_601_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<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">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;initSelectOneComponent(UIComponent&nbsp;component,<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img id="Codehighlighter1_131_1085_Open_Image" onclick="this.style.display='none'; Codehighlighter1_131_1085_Open_Text.style.display='none'; Codehighlighter1_131_1085_Closed_Image.style.display='inline'; Codehighlighter1_131_1085_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_131_1085_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_131_1085_Closed_Text.style.display='none'; Codehighlighter1_131_1085_Open_Image.style.display='inline'; Codehighlighter1_131_1085_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;values,&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;labels,&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;clearBefore)&nbsp;</span><span id="Codehighlighter1_131_1085_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_131_1085_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img id="Codehighlighter1_139_1031_Open_Image" onclick="this.style.display='none'; Codehighlighter1_139_1031_Open_Text.style.display='none'; Codehighlighter1_139_1031_Closed_Image.style.display='inline'; Codehighlighter1_139_1031_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_139_1031_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_139_1031_Closed_Text.style.display='none'; Codehighlighter1_139_1031_Open_Image.style.display='inline'; Codehighlighter1_139_1031_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_139_1031_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_139_1031_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(component&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;values&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;labels&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">isMultiValue(component))<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;optionKey&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;optionLabel&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&nbsp;optionsList&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UISelectItems&nbsp;items&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;UISelectItems();<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optionsList&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayList(values.size());<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img id="Codehighlighter1_497_663_Open_Image" onclick="this.style.display='none'; Codehighlighter1_497_663_Open_Text.style.display='none'; Codehighlighter1_497_663_Closed_Image.style.display='inline'; Codehighlighter1_497_663_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_497_663_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_497_663_Closed_Text.style.display='none'; Codehighlighter1_497_663_Open_Image.style.display='inline'; Codehighlighter1_497_663_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;values.size();&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_497_663_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_497_663_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optionKey&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;values.get(i);<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optionLabel&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(String)labels.get(i);<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelectItem&nbsp;item&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SelectItem(optionKey,&nbsp;optionLabel);<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optionsList.add(item);<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.setValue(optionsList);<br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(clearBefore)<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img id="Codehighlighter1_719_983_Open_Image" onclick="this.style.display='none'; Codehighlighter1_719_983_Open_Text.style.display='none'; Codehighlighter1_719_983_Closed_Image.style.display='inline'; Codehighlighter1_719_983_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_719_983_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_719_983_Closed_Text.style.display='none'; Codehighlighter1_719_983_Open_Image.style.display='inline'; Codehighlighter1_719_983_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_719_983_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_719_983_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;list&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;component.getChildren();<br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;obj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;list.size();&nbsp;i&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img id="Codehighlighter1_830_935_Open_Image" onclick="this.style.display='none'; Codehighlighter1_830_935_Open_Text.style.display='none'; Codehighlighter1_830_935_Closed_Image.style.display='inline'; Codehighlighter1_830_935_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_830_935_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_830_935_Closed_Text.style.display='none'; Codehighlighter1_830_935_Open_Image.style.display='inline'; Codehighlighter1_830_935_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_830_935_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_830_935_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(list.get(i)&nbsp;</span><span style="color: #0000ff">instanceof</span><span style="color: #000000">&nbsp;UISelectItems&nbsp;)<br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img id="Codehighlighter1_884_929_Open_Image" onclick="this.style.display='none'; Codehighlighter1_884_929_Open_Text.style.display='none'; Codehighlighter1_884_929_Closed_Image.style.display='inline'; Codehighlighter1_884_929_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_884_929_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_884_929_Closed_Text.style.display='none'; Codehighlighter1_884_929_Open_Image.style.display='inline'; Codehighlighter1_884_929_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_884_929_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_884_929_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;list.get(i);<br />
</span><span style="color: #008080">34</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
</span><span style="color: #008080">35</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">37</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(obj&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
</span><span style="color: #008080">38</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.remove(obj);<br />
</span><span style="color: #008080">39</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">40</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">41</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;component.getChildren().add(items);<br />
</span><span style="color: #008080">42</span><span style="color: #000000"><img id="Codehighlighter1_1053_1081_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1053_1081_Open_Text.style.display='none'; Codehighlighter1_1053_1081_Closed_Image.style.display='inline'; Codehighlighter1_1053_1081_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1053_1081_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1053_1081_Closed_Text.style.display='none'; Codehighlighter1_1053_1081_Open_Image.style.display='inline'; Codehighlighter1_1053_1081_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;</span><span id="Codehighlighter1_1053_1081_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1053_1081_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">43</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
</span><span style="color: #008080">44</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">45</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">46</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
检查了半天，发现只要不执行initSelectValues，都没有问题，后来一步一步调试才发现，原来是数据类型的问题，同事传入的是List&lt;Integer&gt; values，而SelectItem构造函数支持的是键值都为String的参数，数据类型不对导致了这一个奇怪的现象，但后台没有异常和出错信息让人很纳闷，解决方法就是只要改变值列表为List&lt;String&gt;就可以了。
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/302754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2009-11-18 09:02 <a href="http://www.blogjava.net/TiGERTiAN/archive/2009/11/18/302754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用jQuery给页面中树形的Checkbox默认加上父子节点相关操作(JSF的Richfaces专用)</title><link>http://www.blogjava.net/TiGERTiAN/archive/2009/11/12/302043.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Thu, 12 Nov 2009 00:46:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2009/11/12/302043.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/302043.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2009/11/12/302043.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/302043.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/302043.html</trackback:ping><description><![CDATA[<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">jQuery.noConflict();</span><span style="color: #008000">//</span><span style="color: #008000">与JSF搭配需要这句话，不然会有冲突</span><span style="color: #008000"><br />
<img id="Codehighlighter1_77_412_Open_Image" onclick="this.style.display='none'; Codehighlighter1_77_412_Open_Text.style.display='none'; Codehighlighter1_77_412_Closed_Image.style.display='inline'; Codehighlighter1_77_412_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_77_412_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_77_412_Closed_Text.style.display='none'; Codehighlighter1_77_412_Open_Image.style.display='inline'; Codehighlighter1_77_412_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery(document).ready(</span><span style="color: #0000ff">function</span><span style="color: #000000">()&nbsp;</span><span id="Codehighlighter1_77_412_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_77_412_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Add&nbsp;click&nbsp;event&nbsp;listener&nbsp;to&nbsp;each&nbsp;checkbox&nbsp;in&nbsp;the&nbsp;tree&nbsp;page</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Note!&nbsp;Using&nbsp;this&nbsp;simple&nbsp;selector&nbsp;assumes&nbsp;that&nbsp;there&nbsp;are&nbsp;no&nbsp;other&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;checkboxes&nbsp;on&nbsp;the&nbsp;page,&nbsp;if&nbsp;there&nbsp;are&nbsp;other&nbsp;checkboxes&nbsp;then</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;selector&nbsp;should&nbsp;be&nbsp;changed&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img id="Codehighlighter1_350_406_Open_Image" onclick="this.style.display='none'; Codehighlighter1_350_406_Open_Text.style.display='none'; Codehighlighter1_350_406_Closed_Image.style.display='inline'; Codehighlighter1_350_406_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_350_406_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_350_406_Closed_Text.style.display='none'; Codehighlighter1_350_406_Open_Image.style.display='inline'; Codehighlighter1_350_406_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery(</span><span style="color: #000000">"</span><span style="color: #000000">:checkbox</span><span style="color: #000000">"</span><span style="color: #000000">).click(</span><span style="color: #0000ff">function</span><span style="color: #000000">()</span><span id="Codehighlighter1_350_406_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_350_406_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;updateChildren(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;updateParent(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;updateChildren(currentCheckBox)<br />
<img id="Codehighlighter1_507_1276_Open_Image" onclick="this.style.display='none'; Codehighlighter1_507_1276_Open_Text.style.display='none'; Codehighlighter1_507_1276_Closed_Image.style.display='inline'; Codehighlighter1_507_1276_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_507_1276_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_507_1276_Closed_Text.style.display='none'; Codehighlighter1_507_1276_Open_Image.style.display='inline'; Codehighlighter1_507_1276_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_507_1276_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_507_1276_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Get&nbsp;state&nbsp;of&nbsp;current&nbsp;checkbox&nbsp;(true&nbsp;or&nbsp;false)</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;state&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;currentCheckBox.checked;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Get&nbsp;parent&nbsp;TABLE,&nbsp;where&nbsp;current&nbsp;checkbox&nbsp;is&nbsp;places</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;parentTables&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;jQuery(currentCheckBox).parents(</span><span style="color: #000000">"</span><span style="color: #000000">table</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;parentTable&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;parentTables[</span><span style="color: #000000">0</span><span style="color: #000000">];&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Get&nbsp;DIV&nbsp;where&nbsp;child&nbsp;nodes&nbsp;with&nbsp;checkboxes&nbsp;are&nbsp;situated</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;See&nbsp;http://docs.jquery.com/Traversing/&nbsp;to&nbsp;get&nbsp;better&nbsp;uderstanding&nbsp;of</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;parents()&nbsp;and&nbsp;next()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;childDivs&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;jQuery(parentTable).next(</span><span style="color: #000000">"</span><span style="color: #000000">div</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;&nbsp;&nbsp;&nbsp;childDivs.length&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;)<br />
<img id="Codehighlighter1_1020_1271_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1020_1271_Open_Text.style.display='none'; Codehighlighter1_1020_1271_Closed_Image.style.display='inline'; Codehighlighter1_1020_1271_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1020_1271_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1020_1271_Closed_Text.style.display='none'; Codehighlighter1_1020_1271_Open_Image.style.display='inline'; Codehighlighter1_1020_1271_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1020_1271_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1020_1271_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;childDiv&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;childDivs[</span><span style="color: #000000">0</span><span style="color: #000000">];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Iterate&nbsp;over&nbsp;all&nbsp;child&nbsp;nodes&nbsp;checkboxes&nbsp;and&nbsp;set&nbsp;same&nbsp;state&nbsp;as&nbsp;the&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;current&nbsp;checkbox&nbsp;state</span><span style="color: #008000"><br />
<img id="Codehighlighter1_1231_1264_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1231_1264_Open_Text.style.display='none'; Codehighlighter1_1231_1264_Closed_Image.style.display='inline'; Codehighlighter1_1231_1264_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1231_1264_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1231_1264_Closed_Text.style.display='none'; Codehighlighter1_1231_1264_Open_Image.style.display='inline'; Codehighlighter1_1231_1264_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery(childDiv).contents().find(</span><span style="color: #000000">"</span><span style="color: #000000">:checkbox</span><span style="color: #000000">"</span><span style="color: #000000">).each(</span><span style="color: #0000ff">function</span><span style="color: #000000">()&nbsp;</span><span id="Codehighlighter1_1231_1264_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1231_1264_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.checked&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;state;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">更新父节点的方法，如果子节点全部选中则父节点选中，如果子节点中有一个未选中，则父节点也未选中</span><span style="color: #008000"><br />
<img id="Codehighlighter1_1373_1938_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1373_1938_Open_Text.style.display='none'; Codehighlighter1_1373_1938_Closed_Image.style.display='inline'; Codehighlighter1_1373_1938_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1373_1938_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1373_1938_Closed_Text.style.display='none'; Codehighlighter1_1373_1938_Open_Image.style.display='inline'; Codehighlighter1_1373_1938_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;updateParent(currentCheckbox)&nbsp;</span><span id="Codehighlighter1_1373_1938_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1373_1938_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;parentDivs&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;jQuery(currentCheckbox).parents(</span><span style="color: #000000">"</span><span style="color: #000000">div</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;parentDiv&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;parentDivs[</span><span style="color: #000000">0</span><span style="color: #000000">];&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;hasSelected&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1569_1628_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1569_1628_Open_Text.style.display='none'; Codehighlighter1_1569_1628_Closed_Image.style.display='inline'; Codehighlighter1_1569_1628_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1569_1628_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1569_1628_Closed_Text.style.display='none'; Codehighlighter1_1569_1628_Open_Image.style.display='inline'; Codehighlighter1_1569_1628_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery(parentDiv).contents().find(</span><span style="color: #000000">"</span><span style="color: #000000">:checkbox</span><span style="color: #000000">"</span><span style="color: #000000">).each(</span><span style="color: #0000ff">function</span><span style="color: #000000">()&nbsp;</span><span id="Codehighlighter1_1569_1628_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1569_1628_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_1592_1623_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1592_1623_Open_Text.style.display='none'; Codehighlighter1_1592_1623_Closed_Image.style.display='inline'; Codehighlighter1_1592_1623_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1592_1623_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1592_1623_Closed_Text.style.display='none'; Codehighlighter1_1592_1623_Open_Image.style.display='inline'; Codehighlighter1_1592_1623_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #0000ff">this</span><span style="color: #000000">.checked)&nbsp;</span><span id="Codehighlighter1_1592_1623_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1592_1623_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hasSelected&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />
</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hasSelected = <span style="color: #0000ff">false</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;parentTables&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;jQuery(parentDiv).prev(</span><span style="color: #000000">"</span><span style="color: #000000">table</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(parentTables.length&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_1725_1933_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1725_1933_Open_Text.style.display='none'; Codehighlighter1_1725_1933_Closed_Image.style.display='inline'; Codehighlighter1_1725_1933_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1725_1933_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1725_1933_Closed_Text.style.display='none'; Codehighlighter1_1725_1933_Open_Image.style.display='inline'; Codehighlighter1_1725_1933_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1725_1933_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1725_1933_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;parentTable&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;parentTables[</span><span style="color: #000000">0</span><span style="color: #000000">];<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;parentCheckboxes&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;jQuery(parentTable).find(</span><span style="color: #000000">"</span><span style="color: #000000">:checkbox</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;parentCheckbox&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;parentCheckboxes[</span><span style="color: #000000">0</span><span style="color: #000000">];<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parentCheckbox.checked&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;hasSelected&nbsp;;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
注意引入jQuery包。<br />
此js代码加到页面中，将会给页面中的树形菜单的Checkbox默认加上一些功能：当选择父节点时全选子节点；当子节点全选时，父节点也会被自动选择上。同时不会影响其他Checkbox。
 <img src ="http://www.blogjava.net/TiGERTiAN/aggbug/302043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2009-11-12 08:46 <a href="http://www.blogjava.net/TiGERTiAN/archive/2009/11/12/302043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF中DataTable和SelectOneRadio搭配，每条记录每一行一个radio进行单选的解决办法</title><link>http://www.blogjava.net/TiGERTiAN/archive/2009/01/11/250866.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Sun, 11 Jan 2009 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2009/01/11/250866.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/250866.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2009/01/11/250866.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/250866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/250866.html</trackback:ping><description><![CDATA[这个方法不是太完美，但可以解决JSF的DataTable和SelectOneRadio搭配问题。每条记录每一行一个radio进行单选，只会选中一条。<br />
首先，在页面中datatable的column中加入<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&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;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:selectOneRadio&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="xx"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="#{entrance.test}"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">f:selectItem&nbsp;</span><span style="color: #ff0000">itemValue</span><span style="color: #0000ff">="#{obj.corpOutInfo.coiId}"</span><span style="color: #ff0000">&nbsp;itemLabel</span><span style="color: #0000ff">="#{obj.corpOutInfo.corpName}"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:selectOneRadio</span><span style="color: #0000ff">&gt;</span></div>
然后加入一段jquery的代码用于在用户切换选择的时候，先将所有radio的checked状态都置为false。<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"><img id="Codehighlighter1_31_186_Open_Image" onclick="this.style.display='none'; Codehighlighter1_31_186_Open_Text.style.display='none'; Codehighlighter1_31_186_Closed_Image.style.display='inline'; Codehighlighter1_31_186_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_31_186_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_31_186_Closed_Text.style.display='none'; Codehighlighter1_31_186_Open_Image.style.display='inline'; Codehighlighter1_31_186_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #0000ff">&gt;</span><span id="Codehighlighter1_31_186_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_31_186_Open_Text"><span style="color: #000000; background-color: #f5f5f5"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery.noConflict();</span><span style="color: #008000; background-color: #f5f5f5">//</span><span style="color: #008000; background-color: #f5f5f5">与JSF搭配需要这句话，不然会有冲突</span><span style="color: #008000; background-color: #f5f5f5"><br />
<img id="Codehighlighter1_111_181_Open_Image" onclick="this.style.display='none'; Codehighlighter1_111_181_Open_Text.style.display='none'; Codehighlighter1_111_181_Closed_Image.style.display='inline'; Codehighlighter1_111_181_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_111_181_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_111_181_Closed_Text.style.display='none'; Codehighlighter1_111_181_Open_Image.style.display='inline'; Codehighlighter1_111_181_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery(document).ready(</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">()&nbsp;</span><span id="Codehighlighter1_111_181_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_111_181_Open_Text"><span style="color: #000000; background-color: #f5f5f5">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_150_175_Open_Image" onclick="this.style.display='none'; Codehighlighter1_150_175_Open_Text.style.display='none'; Codehighlighter1_150_175_Closed_Image.style.display='inline'; Codehighlighter1_150_175_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_150_175_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_150_175_Closed_Text.style.display='none'; Codehighlighter1_150_175_Open_Image.style.display='inline'; Codehighlighter1_150_175_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">:radio</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).click(</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">()</span><span id="Codehighlighter1_150_175_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_150_175_Open_Text"><span style="color: #000000; background-color: #f5f5f5">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update(</span><span style="color: #0000ff; background-color: #f5f5f5">this</span><span style="color: #000000; background-color: #f5f5f5">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000; background-color: #f5f5f5">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000; background-color: #f5f5f5">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img id="Codehighlighter1_230_598_Open_Image" onclick="this.style.display='none'; Codehighlighter1_230_598_Open_Text.style.display='none'; Codehighlighter1_230_598_Closed_Image.style.display='inline'; Codehighlighter1_230_598_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_230_598_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_230_598_Closed_Text.style.display='none'; Codehighlighter1_230_598_Open_Image.style.display='inline'; Codehighlighter1_230_598_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #0000ff">&gt;</span><span id="Codehighlighter1_230_598_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_230_598_Open_Text"><span style="color: #000000; background-color: #f5f5f5"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;update(currentRadio)<br />
<img id="Codehighlighter1_265_594_Open_Image" onclick="this.style.display='none'; Codehighlighter1_265_594_Open_Text.style.display='none'; Codehighlighter1_265_594_Closed_Image.style.display='inline'; Codehighlighter1_265_594_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_265_594_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_265_594_Closed_Text.style.display='none'; Codehighlighter1_265_594_Open_Image.style.display='inline'; Codehighlighter1_265_594_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_265_594_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_265_594_Open_Text"><span style="color: #000000; background-color: #f5f5f5">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;parentTables&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;jQuery(currentRadio).parents(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">table</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;parentTable&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;parentTables[</span><span style="color: #000000; background-color: #f5f5f5">0</span><span style="color: #000000; background-color: #f5f5f5">];&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;childDivs&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;jQuery(parentTable).next(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">div</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;childDiv&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;childDivs[</span><span style="color: #000000; background-color: #f5f5f5">0</span><span style="color: #000000; background-color: #f5f5f5">];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_521_552_Open_Image" onclick="this.style.display='none'; Codehighlighter1_521_552_Open_Text.style.display='none'; Codehighlighter1_521_552_Closed_Image.style.display='inline'; Codehighlighter1_521_552_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_521_552_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_521_552_Closed_Text.style.display='none'; Codehighlighter1_521_552_Open_Image.style.display='inline'; Codehighlighter1_521_552_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery(childDiv).contents().find(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">:radio</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).each(</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">()&nbsp;</span><span id="Codehighlighter1_521_552_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_521_552_Open_Text"><span style="color: #000000; background-color: #f5f5f5">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">this</span><span style="color: #000000; background-color: #f5f5f5">.checked&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">false</span><span style="color: #000000; background-color: #f5f5f5">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000; background-color: #f5f5f5">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentRadio.checked&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">true</span><span style="color: #000000; background-color: #f5f5f5">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000; background-color: #f5f5f5"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span></div>
<br />
后台绑定一个属性，但这个属性的set方法会被调用多次，但只有一次是有值的，所以用户选择了哪一行也好获得。<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;test;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_49_67_Open_Image" onclick="this.style.display='none'; Codehighlighter1_49_67_Open_Text.style.display='none'; Codehighlighter1_49_67_Closed_Image.style.display='inline'; Codehighlighter1_49_67_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_49_67_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_49_67_Closed_Text.style.display='none'; Codehighlighter1_49_67_Open_Image.style.display='inline'; Codehighlighter1_49_67_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getTest()&nbsp;</span><span id="Codehighlighter1_49_67_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_49_67_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;test;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_104_165_Open_Image" onclick="this.style.display='none'; Codehighlighter1_104_165_Open_Text.style.display='none'; Codehighlighter1_104_165_Closed_Image.style.display='inline'; Codehighlighter1_104_165_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_104_165_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_104_165_Closed_Text.style.display='none'; Codehighlighter1_104_165_Open_Image.style.display='inline'; Codehighlighter1_104_165_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setTest(String&nbsp;test)&nbsp;</span><span id="Codehighlighter1_104_165_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_104_165_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">=========================</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;test);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
问题算是解决了，实现很简单，但并不太完美。因为后台的那个set方法会触发很多次，次数跟当前的radio数量一致，虽然不怎么影响性能，但用着总觉得不爽，后面再完善下。<br />
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/250866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2009-01-11 16:36 <a href="http://www.blogjava.net/TiGERTiAN/archive/2009/01/11/250866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF直接使用字符数组(byte[])提供文件下载的解决办法</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/12/23/247872.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Tue, 23 Dec 2008 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/12/23/247872.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/247872.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/12/23/247872.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/247872.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/247872.html</trackback:ping><description><![CDATA[<p>项目中所有的文档全部压缩之后存储到数据库，所以需要我们每次从数据库读取二进制然后发送到客户端进行下载。如何在JSF里面这样做呢？<br />
首先对外的方法这样写，我设置了按钮的actionListener的属性<br />
</p>
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;viewContent(ActionEvent&nbsp;event)<br />
<img id="Codehighlighter1_45_446_Open_Image" onclick="this.style.display='none'; Codehighlighter1_45_446_Open_Text.style.display='none'; Codehighlighter1_45_446_Closed_Image.style.display='inline'; Codehighlighter1_45_446_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_45_446_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_45_446_Closed_Text.style.display='none'; Codehighlighter1_45_446_Open_Image.style.display='inline'; Codehighlighter1_45_446_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_45_446_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_45_446_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000"><br />
<img id="Codehighlighter1_55_395_Open_Image" onclick="this.style.display='none'; Codehighlighter1_55_395_Open_Text.style.display='none'; Codehighlighter1_55_395_Closed_Image.style.display='inline'; Codehighlighter1_55_395_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_55_395_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_55_395_Closed_Text.style.display='none'; Codehighlighter1_55_395_Open_Image.style.display='inline'; Codehighlighter1_55_395_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_55_395_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_55_395_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ParkLawDTO&nbsp;obj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.getEnterpriseEnterInBODelegate().getParkLawById(((ParkLawDTO)</span><span style="color: #0000ff">this</span><span style="color: #000000">.getParkLawDataModel().getRowData()).getParkLaw().getPlId());<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Common.downloadFile(FacesContext.getCurrentInstance(),&nbsp;ZipHelper.unzip(obj.getParkLaw().getLawContent()),&nbsp;obj.getParkLaw().getLawName()</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">.doc</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">application/msword;charset=utf-8</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_414_440_Open_Image" onclick="this.style.display='none'; Codehighlighter1_414_440_Open_Text.style.display='none'; Codehighlighter1_414_440_Closed_Image.style.display='inline'; Codehighlighter1_414_440_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_414_440_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_414_440_Closed_Text.style.display='none'; Codehighlighter1_414_440_Open_Image.style.display='inline'; Codehighlighter1_414_440_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #0000ff">catch</span><span style="color: #000000">(Exception&nbsp;e)</span><span id="Codehighlighter1_414_440_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_414_440_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info(</span><span style="color: #000000">"</span><span style="color: #000000">下载文件出错</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;e);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
第一句是从WebService获得对象的实例，第二句是将所有相应信息传输给下载的公共方法，同时解压缩了相应的二进制。<br />
<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"><img id="Codehighlighter1_0_155_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_155_Open_Text.style.display='none'; Codehighlighter1_0_155_Closed_Image.style.display='inline'; Codehighlighter1_0_155_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_0_155_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_0_155_Closed_Text.style.display='none'; Codehighlighter1_0_155_Open_Image.style.display='inline'; Codehighlighter1_0_155_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span id="Codehighlighter1_0_155_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_0_155_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;向客户端发送需要下载的文件<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;faces&nbsp;当前FacesContext<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;content&nbsp;文件的字节数组<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;fileName&nbsp;客户端接收的文件名<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;contentType&nbsp;http的content-type<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;downloadFile(FacesContext&nbsp;faces,&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;content,&nbsp;String&nbsp;fileName,&nbsp;String&nbsp;contentType)<br />
<img id="Codehighlighter1_264_875_Open_Image" onclick="this.style.display='none'; Codehighlighter1_264_875_Open_Text.style.display='none'; Codehighlighter1_264_875_Closed_Image.style.display='inline'; Codehighlighter1_264_875_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_264_875_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_264_875_Closed_Text.style.display='none'; Codehighlighter1_264_875_Open_Image.style.display='inline'; Codehighlighter1_264_875_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_264_875_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_264_875_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000"><br />
<img id="Codehighlighter1_274_825_Open_Image" onclick="this.style.display='none'; Codehighlighter1_274_825_Open_Text.style.display='none'; Codehighlighter1_274_825_Closed_Image.style.display='inline'; Codehighlighter1_274_825_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_274_825_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_274_825_Closed_Text.style.display='none'; Codehighlighter1_274_825_Open_Image.style.display='inline'; Codehighlighter1_274_825_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_274_825_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_274_825_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse&nbsp;response&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(HttpServletResponse)&nbsp;faces.getExternalContext().getResponse();&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader(</span><span style="color: #000000">"</span><span style="color: #000000">Content-disposition</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">filename=</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;URLEncoder.encode(fileName,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">utf-8</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType(contentType);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setContentLength(content.length);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServletOutputStream&nbsp;sos&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;response.getOutputStream();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sos.write(content);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sos.flush();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sos.close();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">需要呼叫Complete</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;faces.responseComplete();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_844_872_Open_Image" onclick="this.style.display='none'; Codehighlighter1_844_872_Open_Text.style.display='none'; Codehighlighter1_844_872_Closed_Image.style.display='inline'; Codehighlighter1_844_872_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_844_872_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_844_872_Closed_Text.style.display='none'; Codehighlighter1_844_872_Open_Image.style.display='inline'; Codehighlighter1_844_872_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #0000ff">catch</span><span style="color: #000000">(Exception&nbsp;e)</span><span id="Codehighlighter1_844_872_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_844_872_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
<span style="color: red">Content-disposition中一定不可以加attachment，经过测试，在IE6下（其他浏览器没测试过），会导致无法打开临时文件（我的是word文档），而且经常出现无法下载文件。</span>
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/247872.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-12-23 10:13 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/12/23/247872.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF中动态生成HtmlMessage控件出错的解决办法</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/12/19/247296.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Fri, 19 Dec 2008 03:41:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/12/19/247296.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/247296.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/12/19/247296.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/247296.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/247296.html</trackback:ping><description><![CDATA[<p>最近搭配Richfaces用Ajax动态生成控件的HtmlMessage的时候，会报错，而且有点摸不着头脑。<br />
<br />
后来看了下，问题原因在于没有给HtmlMessage控件设置ID，设置一下ID就可以了。<br />
<br />
这里有个问题，为什么JSF没有给HtmlMessage控件动态生成ID呢？我怀疑是一个bug，为什么。。<br />
因为如果我单纯的生成一个HtmlMessage实例，不设置任何属性，并动态的添加到页面中，没有任何错，但如果我设置了For属性，如果不设置HtmlMessage控件的ID，就会出错，大家试试就知道了。。很奇怪的一个问题。</p>
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/247296.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-12-19 11:41 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/12/19/247296.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF获得表单提交值的方法</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/12/12/245961.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Fri, 12 Dec 2008 07:11:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/12/12/245961.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/245961.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/12/12/245961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/245961.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/245961.html</trackback:ping><description><![CDATA[<p><span style="color: red">第一种：<br />
</span><br />
1.如在你的页面中有 &lt;input &nbsp; type= "hidden " &nbsp; name= "classid " &nbsp; value= "1 "&gt; <br />
注意要写在form中,并且要用name而不是id. <br />
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get( "classid ")可以得到。&nbsp;&nbsp;&nbsp;<br />
<br />
2. <br />
&lt;h:form &nbsp; id= "f "&gt; <br />
&lt;input &nbsp; type= "hidden " &nbsp; id= "classid " &nbsp; value= "1 "&gt; <br />
&lt;/h:form&gt; <br />
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get( "f:classid ")可以得到。 <br />
<br />
3.使用JSF自带的控件，则和2是一样的访问方法<br />
<br />
以上方法就可以了，写id的时候，jsf会把form的id加进去 变成 formId:componentId 的格式<br />
<br />
<span style="color: red">第二种：<br />
</span><br />
就是通过findComponent方法获得控件实例，然后通过getValue方法获得值<br />
HtmlInputText&nbsp;&nbsp;&nbsp;&nbsp;text = (HtmlInputText) this.findComponent(this.FORM + ":"+ ENERGY_COMSUPTION_PREFIX + id);<br />
String value = text.getValue().toString();</p>
<p>&nbsp;public UIComponent findComponent(String name) {<br />
<br />
&nbsp;&nbsp;// 不能使用静态变量view保持当前的viewroot，因为每次操作之后的viewroot都是不一样的<br />
&nbsp;&nbsp;ViewRoot view = FacesContext.getCurrentInstance().getViewRoot();</p>
<p>&nbsp;&nbsp;return view.findComponent(name);<br />
&nbsp;}<br />
<br />
需要注意的是 不能使用静态变量view保持当前的viewroot，因为每次操作之后的viewroot都是不一样的。<br />
<br />
对比以上两种方法，第一种简单方便，但只适合于取值操作。第二种可操控的范围和能力更大，不仅可以取值还可以设置和获得所有属性。</p>
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/245961.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-12-12 15:11 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/12/12/245961.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>探讨JSF Backing bean生成控件的问题</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/11/27/243040.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Thu, 27 Nov 2008 09:18:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/11/27/243040.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/243040.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/11/27/243040.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/243040.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/243040.html</trackback:ping><description><![CDATA[在新项目中，我们要做一个这样的功能：有一个表格，没有记录，当用户点击&#8220;添加&#8221;的时候，会生成一条行，里面包含了文本输入框，下拉框等等，需要用户填写，以此类推，用户只要需要，他可以填写无限条信息，最后点击一个&#8220;保存&#8221;来保存所有记录。<br />
&nbsp;这里，我们为了提高用户的体验性，使用了Ajax技术，后台生成一个HtmlInputText控件实例添加到指定的panel中，然后刷新表格那一部分显示出来。<br />
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">HtmlInputText&nbsp;text&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HtmlInputText();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />panel.getChildren().add(text);</span></div>
然后当填写了值之后调用了text.getValue()方法，发现打印出来的是null，以为JSF无法捕获Ajax生成控件的值，又尝试设定了Action来生成控件，发现还是不行。<br />
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">HtmlInputText&nbsp;text&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HtmlInputText();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />text.setId(</span><span style="color: #000000">"</span><span style="color: #000000">text_1</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />panel.getChildren().add(text);</span></div>
获取方法使用了：<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;sendMessage(ActionEvent&nbsp;e)<br />
<img id="Codehighlighter1_39_259_Open_Image" onclick="this.style.display='none'; Codehighlighter1_39_259_Open_Text.style.display='none'; Codehighlighter1_39_259_Closed_Image.style.display='inline'; Codehighlighter1_39_259_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_39_259_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_39_259_Closed_Text.style.display='none'; Codehighlighter1_39_259_Open_Image.style.display='inline'; Codehighlighter1_39_259_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_39_259_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_39_259_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />FacesContext&nbsp;context&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;FacesContext.getCurrentInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />UIViewRoot&nbsp;view&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;context.getViewRoot();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />HtmlInputText&nbsp;output&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />(HtmlInputText)view.findComponent(</span><span style="color: #000000">"</span><span style="color: #000000">messageForm:text_1</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />System.out.println(output.getValue());<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
不管是用Ajax方式还是表单提交的方式都可以使用这个方法获得。所以我就在想，这个是什么原因，直接设置实例反而没有办法操作，还要重新获取才可以。<br />
但是如果你在初始化控件的时候进行text.setValue("111");操作还是可以的，这样输入框就会默认出现值111。<br />
<br />
大家有什么看法，尽管发表，如果对这个需求有更好的解决方案，也请提出来，谢谢了。
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/243040.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-11-27 17:18 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/11/27/243040.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF生成控件ID重复的解决办法</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/11/26/242793.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Wed, 26 Nov 2008 07:31:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/11/26/242793.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/242793.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/11/26/242793.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/242793.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/242793.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天同事开发的时候碰到一件很郁闷的事情，就是同样的选择控件在其他页面使用没有任何问题，在他的一个页面里面使用第一次正常，之后打开就总是报错，报错提示就是控件ID重复，好像是duplicate id 云云的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们尝试了给每个控件都设定一个id，还是报错，如果去掉另一个跟它有冲突的选择控件，就没问题，但是不可能去掉的，因为那一项需要去选择。后来想了很多办法，都不是很好，最后同事找到了一个办法，在我封装的底层BaseBean中，给程序生成的选择项控件手动添加id：<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;UISelectItems();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.setId(</span><span style="color: #000000">"</span><span style="color: #000000">j_id_</span><span style="color: #000000">"</span><span style="color: #000000">+String.valueOf(System.nanoTime())</span><span style="color: #000000">);</span></div>
这样，每个控件都有了一个唯一的ID，问题解决了。<br />
提示：不可以用纯数字做ID，会出现错误的。<br />
<br />
<span style="color: red">这里使用了纳秒来生成编号，因为毫秒还是经常会出现id重复。</span><br />
<br />
不知道为什么会有这个问题，其他页面调用相同的底层都没有任何问题，只有这个页面会有，可以确定跟我们写的代码没有关系，因为页面重新做过的，一个控件一个控件添加的试的，就是那两个控件同时出现时报错，所以我想是不是底层生成控件ID那有bug，自己手动生成控件ID就没有任何问题。以后有机会，再研究下源码。 <br />
<br />
注意一下，大部分控件ID重复都是出现在选择之类的控件上面。
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/242793.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-11-26 15:31 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/11/26/242793.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【JSF】Richfaces复选框树(Checkbox tree)的权限分配的解决方案</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/11/19/241278.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Wed, 19 Nov 2008 01:22:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/11/19/241278.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/241278.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/11/19/241278.html#Feedback</comments><slash:comments>66</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/241278.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/241278.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 应大家要求，在此帖上效果图：设计信息系统的时候，往往要设计一套用户管理模块，其中就会牵扯到角色权限的分配，在Richfaces中可以使用PickList来进行角色的分配，但权限的分配不好使用这个控件，因为权限有时候根据父子模块来分配，那么就要分级，而PickList不带分级功能，这时候我们就需要一个Checkbox tree来满足我们的需要。Checkbox tree的页面代码...&nbsp;&nbsp;<a href='http://www.blogjava.net/TiGERTiAN/archive/2008/11/19/241278.html'>阅读全文</a><img src ="http://www.blogjava.net/TiGERTiAN/aggbug/241278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-11-19 09:22 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/11/19/241278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF类的继承关系和体系结构</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/11/16/240871.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Sun, 16 Nov 2008 14:12:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/11/16/240871.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/240871.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/11/16/240871.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/240871.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/240871.html</trackback:ping><description><![CDATA[<img alt="" src="http://www.blogjava.net/images/blogjava_net/tigertian/jsfArchitecture.png" border="0" />
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/240871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-11-16 22:12 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/11/16/240871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF的几种布局方式介绍和比较</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/11/09/239546.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Sun, 09 Nov 2008 12:10:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/11/09/239546.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/239546.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/11/09/239546.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/239546.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/239546.html</trackback:ping><description><![CDATA[1.subview<br />
2.facelets
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/239546.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-11-09 20:10 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/11/09/239546.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF和Richfaces中使用框架页(Frameset)，包括了PanelMenu</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/11/08/239358.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Fri, 07 Nov 2008 17:05:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/11/08/239358.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/239358.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/11/08/239358.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/239358.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/239358.html</trackback:ping><description><![CDATA[第一种，普通的方法:<br />
<div>想在JSF控件中操作框架页Frameset，可以在左框架页（任一框架页）里声明一个Form，设定好它的target="mainFrame"（任一框架页的id），这样当点击这个Form里面的CommandButton或者CommandLink的时候，JSF处理好业务逻辑后，就可以将To-View-ID指定的页面转到主框架页里面去显示了。<br />
<br />
</div>
<div align="center">
<table style="width: 500px; height: 193px" cellspacing="2" cellpadding="2" width="500" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <p>&lt;h:form target="mainFrame"&gt;<br />
            &lt;h:commandButton action="index"&gt;<br />
            &lt;/h:form</p>
            </td>
            <td width="300">mainFrame</td>
        </tr>
    </tbody>
</table>
</div>
<br />
点击左边的commandButton之后，index处理之后的To-View-ID指定的页面就会显示在mainFrame里面了 <br />
<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"><img id="Codehighlighter1_10_123_Open_Image" onclick="this.style.display='none'; Codehighlighter1_10_123_Open_Text.style.display='none'; Codehighlighter1_10_123_Closed_Image.style.display='inline'; Codehighlighter1_10_123_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_10_123_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_10_123_Closed_Text.style.display='none'; Codehighlighter1_10_123_Open_Image.style.display='inline'; Codehighlighter1_10_123_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span id="Codehighlighter1_10_123_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_10_123_Open_Text"><span style="color: #000000; background-color: #f5f5f5"><br />
<img id="Codehighlighter1_35_120_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_120_Open_Text.style.display='none'; Codehighlighter1_35_120_Closed_Image.style.display='inline'; Codehighlighter1_35_120_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_35_120_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_35_120_Closed_Text.style.display='none'; Codehighlighter1_35_120_Open_Image.style.display='inline'; Codehighlighter1_35_120_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;forward(p)&nbsp;</span><span id="Codehighlighter1_35_120_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_35_120_Open_Text"><span style="color: #000000; background-color: #f5f5f5">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.parent.mainFrame.location.href</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">usermanagement/</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;p&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">.faces</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000; background-color: #f5f5f5"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span></div>
添加一个跳转函数，然后分情况添加跳转：<br />
当不需要Action的时候
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">rich:panelMenuItem&nbsp;</span><span style="color: #ff0000">label</span><span style="color: #0000ff">="角色信息维护"</span><span style="color: #ff0000">&nbsp;onclick</span><span style="color: #0000ff">="forward('rolelist')"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span></div>
这样就可以跳转了<br />
<br />
当需要先进行Action操作再跳转的时候<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">rich:panelMenuItem&nbsp;</span><span style="color: #ff0000">label</span><span style="color: #0000ff">="新建角色"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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;action</span><span style="color: #0000ff">="#{user.addRoleMain}"</span><span style="color: #ff0000">&nbsp;oncomplete</span><span style="color: #0000ff">="forward('roledetail')"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span></div>
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;addRoleMain()<br />
<img id="Codehighlighter1_30_63_Open_Image" onclick="this.style.display='none'; Codehighlighter1_30_63_Open_Text.style.display='none'; Codehighlighter1_30_63_Closed_Image.style.display='inline'; Codehighlighter1_30_63_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_30_63_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_30_63_Closed_Text.style.display='none'; Codehighlighter1_30_63_Open_Image.style.display='inline'; Codehighlighter1_30_63_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_30_63_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_30_63_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClearRole();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
这样，在Action完成后，菜单页不会变，主框架页会跳转到指定页面。<br />
<br />
OK,上面两种方法基本能满足开发需要了。
 <img src ="http://www.blogjava.net/TiGERTiAN/aggbug/239358.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-11-08 01:05 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/11/08/239358.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF(Java Server Faces)的StateHolder的作用和使用方法</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/11/05/238813.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Wed, 05 Nov 2008 06:15:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/11/05/238813.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/238813.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/11/05/238813.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/238813.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/238813.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: UI控件、转换器和验证器实现了StateHolder接口表示组件具有了状态，可以保存一些组件自身的属性。下面我们来看一个简单的例子。这是一个正则表达式验证器的例子：public&nbsp;class&nbsp;RegexValidator&nbsp;implements&nbsp;Validator{&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;*//*...&nbsp;&nbsp;<a href='http://www.blogjava.net/TiGERTiAN/archive/2008/11/05/238813.html'>阅读全文</a><img src ="http://www.blogjava.net/TiGERTiAN/aggbug/238813.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-11-05 14:15 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/11/05/238813.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【第三版】RichFaces中使用datatable和datascroller进行分页(使用数据库分页,改良版)(含源码)(JSF 1.2,RichFaces 3.2.1GA) </title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/11/04/238692.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Tue, 04 Nov 2008 11:57:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/11/04/238692.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/238692.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/11/04/238692.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/238692.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/238692.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 第三版是对第二版的一些简化，多了一个抽象基础类，方便调用。页面代码(变成了user.defaultDataModel)：&nbsp;&nbsp;&nbsp;&nbsp;&lt;f:view&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h:form&nbsp;id="formlist"&gt;&nbsp;&nbsp;&...&nbsp;&nbsp;<a href='http://www.blogjava.net/TiGERTiAN/archive/2008/11/04/238692.html'>阅读全文</a><img src ="http://www.blogjava.net/TiGERTiAN/aggbug/238692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-11-04 19:57 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/11/04/238692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【第二版】RichFaces中使用datatable和datascroller进行分页(使用数据库分页,改良版)(含源码)(JSF 1.2,RichFaces 3.2.1GA) </title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/11/01/237953.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Sat, 01 Nov 2008 01:42:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/11/01/237953.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/237953.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/11/01/237953.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/237953.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/237953.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 之前第一版有个问题，就是如果进行了删除等操作并立即返回列表页，被删除的项还在那，但其实数据库已经被删除了，需要做一个刷新列表操作才可以，本版就是修正此问题的。如果要修正此问题，就需要将分页的扩展代码也就是第一版中TestBean中的代码放入业务相关管理Bean中。页面代码（其中testBean已经变成业务Managed-bean user了）：&nbsp;&nbsp;&nbsp;&...&nbsp;&nbsp;<a href='http://www.blogjava.net/TiGERTiAN/archive/2008/11/01/237953.html'>阅读全文</a><img src ="http://www.blogjava.net/TiGERTiAN/aggbug/237953.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-11-01 09:42 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/11/01/237953.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RichFaces中使用datatable和datascroller进行分页(使用数据库分页,改良版)(含源码)(JSF 1.2,RichFaces 3.2.1GA) </title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/10/29/237409.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Wed, 29 Oct 2008 08:52:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/10/29/237409.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/237409.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/10/29/237409.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/237409.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/237409.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 页面:&lt;f:view&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h:form&nbsp;id="formlist"&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;<a href='http://www.blogjava.net/TiGERTiAN/archive/2008/10/29/237409.html'>阅读全文</a><img src ="http://www.blogjava.net/TiGERTiAN/aggbug/237409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-10-29 16:52 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/10/29/237409.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RichFaces中使用datatable和datascroller进行分页(使用数据库分页)(含源码)(JSF 1.2,RichFaces 3.2.1GA) </title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/10/29/237329.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Wed, 29 Oct 2008 02:58:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/10/29/237329.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/237329.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/10/29/237329.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/237329.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/237329.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;package&nbsp;com.jsecode.util.pagination;import&nbsp;java.util.ArrayList;import&nbsp;java.util.List;import&nbsp;javax.faces.context.FacesContext;import&nbsp;javax.faces.model.D...&nbsp;&nbsp;<a href='http://www.blogjava.net/TiGERTiAN/archive/2008/10/29/237329.html'>阅读全文</a><img src ="http://www.blogjava.net/TiGERTiAN/aggbug/237329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-10-29 10:58 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/10/29/237329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RichFaces中使用datatable和datascroller进行分页(JSF 1.2,RichFaces 3.2.1GA)</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/10/28/237225.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Tue, 28 Oct 2008 13:50:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/10/28/237225.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/237225.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/10/28/237225.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/237225.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/237225.html</trackback:ping><description><![CDATA[jsp页面中的相关代码：<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">f:view</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:form</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">rich:dataTable&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="carList"</span><span style="color: #ff0000">&nbsp;width</span><span style="color: #0000ff">="483"</span><span style="color: #ff0000">&nbsp;rows</span><span style="color: #0000ff">="10"</span><span style="color: #ff0000">&nbsp;columnClasses</span><span style="color: #0000ff">="col"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value</span><span style="color: #0000ff">="#{user.allCars}"</span><span style="color: #ff0000">&nbsp;var</span><span style="color: #0000ff">="car"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">f:facet&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="header"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">rich:columnGroup</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:outputText&nbsp;</span><span style="color: #ff0000">styleClass</span><span style="color: #0000ff">="headerText"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="Name"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:outputText&nbsp;</span><span style="color: #ff0000">styleClass</span><span style="color: #0000ff">="headerText"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="Decription"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:outputText&nbsp;</span><span style="color: #ff0000">styleClass</span><span style="color: #0000ff">="headerText"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="Base&nbsp;Price"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:outputText&nbsp;</span><span style="color: #ff0000">styleClass</span><span style="color: #0000ff">="headerText"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="Time"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&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;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:outputText&nbsp;</span><span style="color: #ff0000">styleClass</span><span style="color: #0000ff">="headerText"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="操作操作"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&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 />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">rich:columnGroup</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">f:facet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:outputText&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">="#{car.name}"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:outputText&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">="#{car.description}"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:outputText&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">="#{car.baseprice}"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:outputText&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">="#{car.timestamp}"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:commandLink&nbsp;</span><span style="color: #ff0000">action</span><span style="color: #0000ff">="#{user.delete}"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="删除"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">f:param&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="id"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="#{car.id}"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:commandLink</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:column</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">rich:dataTable</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">rich:datascroller&nbsp;</span><span style="color: #ff0000">for</span><span style="color: #0000ff">="carList"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="dc1"</span><span style="color: #ff0000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;style</span><span style="color: #0000ff">="width:483px"</span><span style="color: #ff0000">&nbsp;page</span><span style="color: #0000ff">="#{user.scrollerPage}"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&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 />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:form</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">f:view</span><span style="color: #0000ff">&gt;</span></div>
后台User类的代码：<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;User<br />
<img id="Codehighlighter1_18_974_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_974_Open_Text.style.display='none'; Codehighlighter1_18_974_Closed_Image.style.display='inline'; Codehighlighter1_18_974_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_18_974_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_18_974_Closed_Text.style.display='none'; Codehighlighter1_18_974_Open_Image.style.display='inline'; Codehighlighter1_18_974_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_18_974_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_18_974_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;scrollerPage&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">CarBean</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;allCars;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;User()<br />
<img id="Codehighlighter1_105_109_Open_Image" onclick="this.style.display='none'; Codehighlighter1_105_109_Open_Text.style.display='none'; Codehighlighter1_105_109_Closed_Image.style.display='inline'; Codehighlighter1_105_109_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_105_109_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_105_109_Closed_Text.style.display='none'; Codehighlighter1_105_109_Open_Image.style.display='inline'; Codehighlighter1_105_109_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_105_109_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_105_109_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getScrollerPage()<br />
<img id="Codehighlighter1_144_170_Open_Image" onclick="this.style.display='none'; Codehighlighter1_144_170_Open_Text.style.display='none'; Codehighlighter1_144_170_Closed_Image.style.display='inline'; Codehighlighter1_144_170_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_144_170_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_144_170_Closed_Text.style.display='none'; Codehighlighter1_144_170_Open_Image.style.display='inline'; Codehighlighter1_144_170_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_144_170_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_144_170_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;scrollerPage;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setScrollerPage(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;scrollerPage)<br />
<img id="Codehighlighter1_221_316_Open_Image" onclick="this.style.display='none'; Codehighlighter1_221_316_Open_Text.style.display='none'; Codehighlighter1_221_316_Closed_Image.style.display='inline'; Codehighlighter1_221_316_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_221_316_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_221_316_Closed_Text.style.display='none'; Codehighlighter1_221_316_Open_Image.style.display='inline'; Codehighlighter1_221_316_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_221_316_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_221_316_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.scrollerPage&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;scrollerPage;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">current&nbsp;page&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;scrollerPage);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">CarBean</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;getAllCars()<br />
<img id="Codehighlighter1_355_512_Open_Image" onclick="this.style.display='none'; Codehighlighter1_355_512_Open_Text.style.display='none'; Codehighlighter1_355_512_Closed_Image.style.display='inline'; Codehighlighter1_355_512_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_355_512_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_355_512_Closed_Text.style.display='none'; Codehighlighter1_355_512_Open_Image.style.display='inline'; Codehighlighter1_355_512_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_355_512_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_355_512_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CarBeanDAO&nbsp;dao&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;CarBeanDAO();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query&nbsp;q&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;EntityManagerHelper.createQuery(</span><span style="color: #000000">"</span><span style="color: #000000">from&nbsp;CarBean&nbsp;cars&nbsp;order&nbsp;by&nbsp;cars.id&nbsp;desc</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;q.getResultList();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setAllCars(List</span><span style="color: #000000">&lt;</span><span style="color: #000000">CarBean</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;allCars)<br />
<img id="Codehighlighter1_564_593_Open_Image" onclick="this.style.display='none'; Codehighlighter1_564_593_Open_Text.style.display='none'; Codehighlighter1_564_593_Closed_Image.style.display='inline'; Codehighlighter1_564_593_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_564_593_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_564_593_Closed_Text.style.display='none'; Codehighlighter1_564_593_Open_Image.style.display='inline'; Codehighlighter1_564_593_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_564_593_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_564_593_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.allCars&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;allCars;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;delete()<br />
<img id="Codehighlighter1_622_972_Open_Image" onclick="this.style.display='none'; Codehighlighter1_622_972_Open_Text.style.display='none'; Codehighlighter1_622_972_Closed_Image.style.display='inline'; Codehighlighter1_622_972_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_622_972_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_622_972_Closed_Text.style.display='none'; Codehighlighter1_622_972_Open_Image.style.display='inline'; Codehighlighter1_622_972_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_622_972_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_622_972_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FacesContext&nbsp;ctx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;FacesContext.getCurrentInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Integer.parseInt(ctx.getExternalContext().getRequestParameterMap().get(</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EntityManagerHelper.beginTransaction();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CarBeanDAO&nbsp;dao&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;CarBeanDAO();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CarBean&nbsp;bean&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;dao.findById(id);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(bean&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dao.delete(bean);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EntityManagerHelper.commit();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
datatable+datascroller使用的是伪分页的方式，也就是说在数据库层那并没有分页，只是程序一次读出所有数据然后进行程序分页操作，这样适合数据量不太大的分页操作，数据量过大的话就需要自己写数据模型进行操作了。本分页代码加入了删除记录的功能，delete结果返回null会使删除操作完成后返回当前页面，这样就会发现刚才被删除数据消失了，后面数据都上来一条。
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/237225.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-10-28 21:50 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/10/28/237225.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在JSF控件中操作框架页Frameset</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/10/27/236914.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Mon, 27 Oct 2008 09:05:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/10/27/236914.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/236914.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/10/27/236914.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/236914.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/236914.html</trackback:ping><description><![CDATA[<div>想在JSF控件中操作框架页Frameset，可以在左框架页（任一框架页）里声明一个Form，设定好它的target="mainFrame"（任一框架页的id），这样当点击这个Form里面的CommandButton或者CommandLink的时候，JSF处理好业务逻辑后，就可以将To-View-ID指定的页面转到主框架页里面去显示了。<br />
<br />
</div>
<div align="center">
<table style="width: 500px; height: 193px" cellspacing="2" cellpadding="2" width="500" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <p>&lt;h:form target="mainFrame"&gt;<br />
            &lt;h:commandButton action="index"&gt;<br />
            &lt;/h:form</p>
            </td>
            <td width="300">mainFrame</td>
        </tr>
    </tbody>
</table>
</div>
<br />
点击左边的commandButton之后，index处理之后的To-View-ID指定的页面就会显示在mainFrame里面了
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/236914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-10-27 17:05 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/10/27/236914.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF的某些东西在IE和MyEclipse自带浏览器中显示的不一样</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/10/17/234979.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Fri, 17 Oct 2008 09:13:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/10/17/234979.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/234979.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/10/17/234979.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/234979.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/234979.html</trackback:ping><description><![CDATA[今天测试了一下JSF中的param参数，发现MyEclipse中自带的浏览器和IE现实的不一样，很晕。<br />
比如说输出浏览器参数result=333，页面中加入&lt;h:outputText value="#{param.result}"/&gt;，在IE中打印出来的是333，而在MyEclipse浏览器中打印出啦的是类似于[Ljava.lang.String;@786119的玩意儿。狂晕，不知道谁知道怎么回事。。请赐教。谢谢了。
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/234979.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-10-17 17:13 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/10/17/234979.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF页面中支持的Expression Language(EL)</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/10/17/234952.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Fri, 17 Oct 2008 07:22:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/10/17/234952.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/234952.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/10/17/234952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/234952.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/234952.html</trackback:ping><description><![CDATA[<p>以下是可使用的EL常量的列表：<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/tigertian/jsfel1.jpg" border="0" /><br />
<img height="544" alt="" src="http://www.blogjava.net/images/blogjava_net/tigertian/jsfel2.jpg" width="670" border="0" /></p>
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/234952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-10-17 15:22 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/10/17/234952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>后来程序控制前台UI控件的方法</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/10/17/234882.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Fri, 17 Oct 2008 05:51:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/10/17/234882.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/234882.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/10/17/234882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/234882.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/234882.html</trackback:ping><description><![CDATA[第一种方法：<br />
JSF页面中的代码：<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:form&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="messageForm"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:outputText&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="outputMessage"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:commandButton&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">="Get&nbsp;Message"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />actionListener</span><span style="color: #0000ff">="#{testForm.sendMessage}"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:form</span><span style="color: #0000ff">&gt;</span></div>
后台程序：<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;sendMessage(ActionEvent&nbsp;e)<br />
<img id="Codehighlighter1_39_296_Open_Image" onclick="this.style.display='none'; Codehighlighter1_39_296_Open_Text.style.display='none'; Codehighlighter1_39_296_Closed_Image.style.display='inline'; Codehighlighter1_39_296_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_39_296_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_39_296_Closed_Text.style.display='none'; Codehighlighter1_39_296_Open_Image.style.display='inline'; Codehighlighter1_39_296_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_39_296_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_39_296_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />FacesContext&nbsp;context&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;FacesContext.getCurrentInstance();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />UIViewRoot&nbsp;view&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;context.getViewRoot();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />HtmlOutputText&nbsp;output&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />(HtmlOutputText)view.findComponent(</span><span style="color: #000000">"</span><span style="color: #000000">messageForm:outputMessage</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />output.setStyle(</span><span style="color: #000000">"</span><span style="color: #000000">color:blue</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />output.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">Who's&nbsp;the&nbsp;Mann?</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
之后，当点击Get Message的时候页面就会在outputMessage的地方输出 <span style="color: #0000ff">Who's the Mann?</span> <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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:inputText&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">="#{registrationForm.comments}"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />binding</span><span style="color: #0000ff">="#{registrationForm.commentsInput}"</span><span style="color: #0000ff">/&gt;</span></div>
commentsInput是RegistrationForm中的一个HtmlInputText类型的一个变量，通过binding属性将前台UI控件和后台同类型的变量绑定，就可以在后台直接操作了。
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/234882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-10-17 13:51 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/10/17/234882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Server Faces Events And Listeners (JSF中的事件与监听器)</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/10/14/234179.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Tue, 14 Oct 2008 02:49:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/10/14/234179.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/234179.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/10/14/234179.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/234179.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/234179.html</trackback:ping><description><![CDATA[JSF的一个核心就是事件与监听。JSF事件分为以下几种：<br />
1、Value-change events（值改变事件）<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:inputText&nbsp;</span><span style="color: #ff0000">valueChangeListener</span><span style="color: #0000ff">="#{myForm.processValueChanged}"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:panelGrid&nbsp;</span><span style="color: #ff0000">binding</span><span style="color: #0000ff">="#{myForm.changePanel}"</span><span style="color: #ff0000">&nbsp;rendered</span><span style="color: #0000ff">="false"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><img alt="" src="http://www.blogjava.net/Images/dot.gif" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:panelGrid</span><span style="color: #0000ff">&gt;</span></div>
<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;processValueChanged(ValueChangeEvent&nbsp;event)<br />
<img id="Codehighlighter1_56_175_Open_Image" onclick="this.style.display='none'; Codehighlighter1_56_175_Open_Text.style.display='none'; Codehighlighter1_56_175_Closed_Image.style.display='inline'; Codehighlighter1_56_175_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_56_175_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_56_175_Closed_Text.style.display='none'; Codehighlighter1_56_175_Open_Image.style.display='inline'; Codehighlighter1_56_175_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_56_175_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_56_175_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />HtmlInputText&nbsp;sender&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(HtmlInputText)event.getComponent();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />sender.setReadonly(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />changePanel.setRendered(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
当inputText的值改变的时候会触发processValueChanged事件，此事情内部通过参数，获取HtmlInputText的控件，然后设定readonly，同时设定panelGrid的模型changePanel的属性，因为panelGrid绑定了changePanel这个模型。<br />
<br />
2、Action events(动作事件)<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:commandButton&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="submit"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="Login"</span><span style="color: #ff0000">&nbsp;action</span><span style="color: #0000ff">="success"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />immediate</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">/&gt;</span></div>
上面这个是静态outcome事件，在faces-config.xml中配置相应的属性后，点击该按钮会转向相应的方法。<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:commandButton&nbsp;</span><span style="color: #ff0000">value&nbsp;</span><span style="color: #0000ff">=&nbsp;"Test&nbsp;Action&nbsp;Listener"</span><span style="color: #ff0000">&nbsp;actionListener&nbsp;</span><span style="color: #0000ff">=&nbsp;"#{testActionListener.doSomeAction}"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span></div>
如果添加了actionListener属性的话，点击之后，在转向其他页面之前，会触发指定的事件，处理之后再转向。<br />
这里的doSomeAction方法的声明是void doSomeAction(ActionEvent actionEvent)。<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:commandButton&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="submit"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="Login"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />action</span><span style="color: #0000ff">="#{loginForm.login}"</span><span style="color: #0000ff">/&gt;</span></div>
上面这个是动态outcome事件，当点击该按钮之后会直接触发loginForm中的login事件，login事件返回的是一个字符串，在login处理完相应操作之后需要返回一个属性中已经配置过的字符串，例如success，然后JSF根据faces-config.xml中的配置，跳转到相应的页面。login的声明一般是String login();<br />
<br />
当然也可以通过程序来添加监听器，不过监听器类需要实现ActionListener接口：<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">UIComponent&nbsp;myComponent&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;UIComponent();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />myComponent.addActionListener(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TestActionListener());<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />myComponent.addActionListener(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;CustomActionListener());<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<br />
3、Data model events（数据模型事件）<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">FacesContext&nbsp;facesContext&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;FacesContext.getCurrentInstance();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />dataTable&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(HtmlDataTable)facesContext.getApplication().createComponent(<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />HtmlDataTable.COMPONENT_TYPE);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />DataModel&nbsp;myDataModel&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ResultSetDataModel(myResultSet);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />myDataModel.addDataModelListener(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DataModelListener()<br />
<img id="Codehighlighter1_286_430_Open_Image" onclick="this.style.display='none'; Codehighlighter1_286_430_Open_Text.style.display='none'; Codehighlighter1_286_430_Closed_Image.style.display='inline'; Codehighlighter1_286_430_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_286_430_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_286_430_Closed_Text.style.display='none'; Codehighlighter1_286_430_Open_Image.style.display='inline'; Codehighlighter1_286_430_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_286_430_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_286_430_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;rowSelected(DataModelEvent&nbsp;e)<br />
<img id="Codehighlighter1_330_428_Open_Image" onclick="this.style.display='none'; Codehighlighter1_330_428_Open_Text.style.display='none'; Codehighlighter1_330_428_Closed_Image.style.display='inline'; Codehighlighter1_330_428_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_330_428_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_330_428_Closed_Text.style.display='none'; Codehighlighter1_330_428_Open_Image.style.display='inline'; Codehighlighter1_330_428_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span id="Codehighlighter1_330_428_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_330_428_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />FacesContext.getCurrentInstance().getExternalContext().<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />log(</span><span style="color: #000000">"</span><span style="color: #000000">row&nbsp;selected:</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;e.getRowIndex());<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />dataTable.setValue(myDataModel);</span></div>
将上面的代码放入初始化程序中，当行的选择改变的时候就会触发相应的日志打印。<br />
这是因为这段代码给dataTable控件定义了一个数据模型，数据和相应的事件全部存在这个数据模型里面，然后将dataTable与这个模型进行绑定即可使用它所有的数据和事件。点击dataTable上面的一行自然也就会出发相应的行选择事件。 <br />
<br />
4.Phase events（阶段事件）<br />
<p>这个事件是为了捕捉一些阶段和过程而设定的，有以下几个阶段可以捕捉：<br />
</p>
<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">ANY_PHASE&nbsp;任一阶段<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />APPLY_REQUEST_VALUES&nbsp;&nbsp;请求处理阶段的应用请求值阶段<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />INVOKE_APPLICATION&nbsp;请求处理阶段的调用程序阶段<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />PROCESS_VALIDATIONS&nbsp;请求处理阶段的处理验证阶段<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />RENDER_RESPONSE&nbsp;&nbsp;请求处理阶段的描述响应阶段<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />RESTORE_VIEW&nbsp;请求处理阶段的恢复视图阶段<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />UPDATE_MODEL_VALUES&nbsp;请求处理阶段的更新模型值阶段</span></div>
<p>具体可以参考<a href="http://java.sun.com/javaee/javaserverfaces/1.1_01/docs/api/javax/faces/event/PhaseId.html">http://java.sun.com/javaee/javaserverfaces/1.1_01/docs/api/javax/faces/event/PhaseId.html</a></p>
<p>通过设定在实现类中设定相应的PhaseId以及添加到faces-config.xml中就可以捕捉相应阶段事件并添加响应的代码</p>
<p>实现类</p>
<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.faces.event.PhaseEvent;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.faces.event.PhaseId;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.faces.event.PhaseListener;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;CustomPhaseListener&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;PhaseListener<br />
<img id="Codehighlighter1_170_576_Open_Image" onclick="this.style.display='none'; Codehighlighter1_170_576_Open_Text.style.display='none'; Codehighlighter1_170_576_Closed_Image.style.display='inline'; Codehighlighter1_170_576_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_170_576_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_170_576_Closed_Text.style.display='none'; Codehighlighter1_170_576_Open_Image.style.display='inline'; Codehighlighter1_170_576_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_170_576_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_170_576_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;CustomPhaseListener()<br />
<img id="Codehighlighter1_213_219_Open_Image" onclick="this.style.display='none'; Codehighlighter1_213_219_Open_Text.style.display='none'; Codehighlighter1_213_219_Closed_Image.style.display='inline'; Codehighlighter1_213_219_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_213_219_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_213_219_Closed_Text.style.display='none'; Codehighlighter1_213_219_Open_Image.style.display='inline'; Codehighlighter1_213_219_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_213_219_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_213_219_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;afterPhase(PhaseEvent&nbsp;event)<br />
<img id="Codehighlighter1_271_347_Open_Image" onclick="this.style.display='none'; Codehighlighter1_271_347_Open_Text.style.display='none'; Codehighlighter1_271_347_Closed_Image.style.display='inline'; Codehighlighter1_271_347_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_271_347_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_271_347_Closed_Text.style.display='none'; Codehighlighter1_271_347_Open_Image.style.display='inline'; Codehighlighter1_271_347_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_271_347_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_271_347_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">After&nbsp;Phase-&gt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;event.getPhaseId());&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;beforePhase(PhaseEvent&nbsp;event)<br />
<img id="Codehighlighter1_400_473_Open_Image" onclick="this.style.display='none'; Codehighlighter1_400_473_Open_Text.style.display='none'; Codehighlighter1_400_473_Closed_Image.style.display='inline'; Codehighlighter1_400_473_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_400_473_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_400_473_Closed_Text.style.display='none'; Codehighlighter1_400_473_Open_Image.style.display='inline'; Codehighlighter1_400_473_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_400_473_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_400_473_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Before&nbsp;Phase-&gt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;event.getPhaseId());<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;PhaseId&nbsp;getPhaseId()<br />
<img id="Codehighlighter1_512_570_Open_Image" onclick="this.style.display='none'; Codehighlighter1_512_570_Open_Text.style.display='none'; Codehighlighter1_512_570_Closed_Image.style.display='inline'; Codehighlighter1_512_570_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_512_570_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_512_570_Closed_Text.style.display='none'; Codehighlighter1_512_570_Open_Image.style.display='inline'; Codehighlighter1_512_570_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_512_570_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_512_570_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;PhaseId.ANY_PHASE;</span><span style="color: #008000">//</span><span style="color: #008000">选择事件标识的常量，此为任一阶段</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
<br />
在faces-config.xml中添加<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">lifecycle</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">phase-listener</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;net.javabeat.articles.jsf.events.actions.TestActionListener<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">phase-listener</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">lifecycle</span><span style="color: #0000ff">&gt;</span></div>
<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">lifecycle</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">phase-listener</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">PhaseListener1</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">phase-listener</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">phase-listener</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">PhaseListener2</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">phase-listener</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">lifecycle</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<br />
下面是请求处理的生命周期，大家可以直观的看一下各个阶段执行顺序：<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/tigertian/jsfrequestlifecycle.png" border="0" />&nbsp;<br />
各个阶段的说明以及所能触发的事件<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/tigertian/jsfeventtable.jpg" border="0" /> 
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/234179.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-10-14 10:49 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/10/14/234179.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF与后台程序的交互</title><link>http://www.blogjava.net/TiGERTiAN/archive/2008/09/28/231687.html</link><dc:creator>TiGERTiAN</dc:creator><author>TiGERTiAN</author><pubDate>Sun, 28 Sep 2008 07:20:00 GMT</pubDate><guid>http://www.blogjava.net/TiGERTiAN/archive/2008/09/28/231687.html</guid><wfw:comment>http://www.blogjava.net/TiGERTiAN/comments/231687.html</wfw:comment><comments>http://www.blogjava.net/TiGERTiAN/archive/2008/09/28/231687.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TiGERTiAN/comments/commentRss/231687.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TiGERTiAN/services/trackbacks/231687.html</trackback:ping><description><![CDATA[如果Managed-Bean已经被创建并存在，则可以通过下面的形式访问session范围内的Managed-Bean<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">org.test.TestBean&nbsp;x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(org.test.TestBean)&nbsp;request.getSession().getAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">testBean</span><span style="color: #000000">"</span><span style="color: #000000">);</span></div>
<br />
<br />
如果不存在，则需要先访问一下Managed-Bean，让他被触发而创建<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">org.test.TestBean&nbsp;x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(org.test.TestBean)&nbsp;Util.getBean(</span><span style="color: #000000">"</span><span style="color: #000000">testBean</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">In&nbsp;Util.java:</span><span style="color: #008000"><br />
<img id="Codehighlighter1_127_360_Open_Image" onclick="this.style.display='none'; Codehighlighter1_127_360_Open_Text.style.display='none'; Codehighlighter1_127_360_Closed_Image.style.display='inline'; Codehighlighter1_127_360_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_127_360_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_127_360_Closed_Text.style.display='none'; Codehighlighter1_127_360_Open_Image.style.display='inline'; Codehighlighter1_127_360_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Object&nbsp;getBean(String&nbsp;expr)</span><span id="Codehighlighter1_127_360_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_127_360_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />FacesContext&nbsp;context&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;FacesContext.getCurrentInstance();&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />Application&nbsp;app&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;context.getApplication();&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />ValueBinding&nbsp;binding&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;app.createValueBinding(</span><span style="color: #000000">"</span><span style="color: #000000">#{</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;expr&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">}</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />Object&nbsp;value&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;binding.getValue(context);&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;value;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<br />
为JSF指定Action，可以这样写：<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">h:commandButton&nbsp;action</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">#{user.verify}</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">Say&nbsp;Hello!</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">h:commandButton</span><span style="color: #000000">&gt;</span></div>
User类中的代码:<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;verify()<br />
<img id="Codehighlighter1_25_163_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_163_Open_Text.style.display='none'; Codehighlighter1_25_163_Closed_Image.style.display='inline'; Codehighlighter1_25_163_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_25_163_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_25_163_Closed_Text.style.display='none'; Codehighlighter1_25_163_Open_Image.style.display='inline'; Codehighlighter1_25_163_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_25_163_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_25_163_Open_Text"><span style="color: #000000">{</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">hello</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
faces-config.xml中:<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">managed-bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">User&nbsp;Name&nbsp;Bean</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">managed-bean-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">user</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">managed-bean-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">managed-bean-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">demo.User</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">managed-bean-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">managed-bean-scope</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">session</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">managed-bean-scope</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">managed-bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">navigation-rule</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">from-view-id</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/pages/inputUserName.jsp</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">from-view-id</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">navigation-case</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">from-outcome</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">hello</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">from-outcome</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">to-view-id</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/pages/hello.jsp</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">to-view-id</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">navigation-case</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">navigation-rule</span><span style="color: #0000ff">&gt;</span></div>
这样，点击按钮，就会转到verify方法中进行验证，然后返回相应结果的字符串，jsf根据返回的结果进行相应的页面跳转。<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/TiGERTiAN/aggbug/231687.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TiGERTiAN/" target="_blank">TiGERTiAN</a> 2008-09-28 15:20 <a href="http://www.blogjava.net/TiGERTiAN/archive/2008/09/28/231687.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>