﻿<?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-绿野仙棕-文章分类-jsf技术</title><link>http://www.blogjava.net/donglei/category/15737.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 05:58:14 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 05:58:14 GMT</pubDate><ttl>60</ttl><item><title>JSF DataTable 学习（2）</title><link>http://www.blogjava.net/donglei/articles/72524.html</link><dc:creator>土牛小屋</dc:creator><author>土牛小屋</author><pubDate>Thu, 28 Sep 2006 04:12:00 GMT</pubDate><guid>http://www.blogjava.net/donglei/articles/72524.html</guid><wfw:comment>http://www.blogjava.net/donglei/comments/72524.html</wfw:comment><comments>http://www.blogjava.net/donglei/articles/72524.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/donglei/comments/commentRss/72524.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/donglei/services/trackbacks/72524.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">h:dataTable标签用来生成表格，感觉就和struts的logic：iterator差不多，下面是一般的用法：<br /></font>
		</p>
		<p>
				<font size="2">
				</font>
		</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 id="Code_Closed_Image_120749" onclick="this.style.display='none'; Code_Closed_Text_120749.style.display='none'; Code_Open_Image_120749.style.display='inline'; Code_Open_Text_120749.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" />
				<img id="Code_Open_Image_120749" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_120749.style.display='none'; Code_Closed_Image_120749.style.display='inline'; Code_Closed_Text_120749.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" />
				<span id="Code_Closed_Text_120749" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
				</span>
				<span id="Code_Open_Text_120749" style="DISPLAY: none">
						<br />
						<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
						<span style="COLOR: #008080"> 1</span>
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">h:dataTable </span>
						<span style="COLOR: #ff0000">value</span>
						<span style="COLOR: #0000ff">='#{items}' </span>
						<span style="COLOR: #ff0000">var</span>
						<span style="COLOR: #0000ff">='item'&gt;<br /></span>
						<span style="COLOR: #008080"> 2</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080"> 3</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #ff0000">&lt;h:column</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080"> 4</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080"> 5</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">%-- </span>
						<span style="COLOR: #ff0000">left column components --%</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080"> 6</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080"> 7</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">h:outputText </span>
						<span style="COLOR: #ff0000">value</span>
						<span style="COLOR: #0000ff">='#{item.propertyName}'/&gt;<br /></span>
						<span style="COLOR: #008080"> 8</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080"> 9</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #ff0000">&lt;/h:column</span>
						<span style="COLOR: #0000ff">&gt;</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/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">11</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /></span>
						<span style="COLOR: #008080">12</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">13</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </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 />
						</span>
						<span style="COLOR: #008080">14</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">15</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">%-- </span>
						<span style="COLOR: #ff0000">next column components --%</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">16</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">17</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">h:outputText </span>
						<span style="COLOR: #ff0000">value</span>
						<span style="COLOR: #0000ff">='#{item.anotherPropertyName}'/&gt;<br /></span>
						<span style="COLOR: #008080">18</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">19</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #ff0000">&lt;/h:column</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">20</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">21</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /></span>
						<span style="COLOR: #008080">22</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">23</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">%-- </span>
						<span style="COLOR: #ff0000">add more columns, as desired --%</span>
						<span style="COLOR: #0000ff">&gt;</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/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">25</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">h:dataTable</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">26</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">27</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
				</span>
		</div>
		<p>其中这个items可以是一个集合(其类型可以是array、java.util.List、java.sql.ResultSet、javax.servlet.jsp.jstl.sql.Result、javax.faces.model.DataModel，循环遍历所有的item），或者是其他任何非集合的元素（循环一次）。<br />注意1）h:dataTable里面只能包含h:column。2）在h:dataTable这种能render子元素的标签中，要显示原始文本的话，要用&lt;f:verbatim&gt;&lt;/f:verbatim&gt;将文本包含起来（或者用h:outputText）。3） &lt;f:facet name="header"&gt;和&lt;f:facet name="footer"&gt;可以制定表头和表尾。</p>
		<p>
				<font size="2">h:dataTable有以下这些属性：<br /></font>
		</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" />
				<span style="COLOR: #000000">bgcolor<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> Background color for the table<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />border<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> Width of the table's border<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />cellpadding<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> Padding around table cells<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />cellspacing<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> Spacing between table cells<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />columnClasses<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> Comma-separated list of CSS classes for columns<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />first<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> Index of the first row shown in the table<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />footerClass<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> CSS class for the table footer<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />frame<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> Specification for sides of the frame surrounding the table should be drawn; valid values: none, above, below, hsides, vsides, lhs, rhs, box, border<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />headerClass<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> CSS class for the table header<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />rowClasses<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> Comma-separated list of CSS classes for columns<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />rules<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> Specification for lines drawn between cells; valid values: groups, rows, columns, all<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />summary<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> Summary of the table's purpose and structure used for non-visual feedback such as speech<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />var<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> The name of the variable created by the data table that represents the current item in the value<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />binding, id, rendered, styleClass, value<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> Basic attributes<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />dir, lang, style, title, width<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> HTML 4.0<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseout, onmouseover, onmouseup<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> DHTML events<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
		</div>
		<p>
				<br />有一个很有意思的例子，它可以生成一个动态可编辑的表格：<br /><font size="2"></font></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 id="Code_Closed_Image_120824" onclick="this.style.display='none'; Code_Closed_Text_120824.style.display='none'; Code_Open_Image_120824.style.display='inline'; Code_Open_Text_120824.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" />
				<img id="Code_Open_Image_120824" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_120824.style.display='none'; Code_Closed_Image_120824.style.display='inline'; Code_Closed_Text_120824.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" />
				<span id="Code_Closed_Text_120824" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
				</span>
				<span id="Code_Open_Text_120824" style="DISPLAY: none">
						<br />
						<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
						<span style="COLOR: #008080"> 1</span>
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">h:dataTable </span>
						<span style="COLOR: #ff0000">value</span>
						<span style="COLOR: #0000ff">="#{tableData.names}"</span>
						<span style="COLOR: #ff0000"> var</span>
						<span style="COLOR: #0000ff">="name"</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080"> 2</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080"> 3</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">%-- </span>
						<span style="COLOR: #ff0000">checkbox column --%</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080"> 4</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080"> 5</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </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 />
						</span>
						<span style="COLOR: #008080"> 6</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080"> 7</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">f:facet </span>
						<span style="COLOR: #ff0000">name</span>
						<span style="COLOR: #0000ff">="header"</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080"> 8</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080"> 9</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">h:outputText </span>
						<span style="COLOR: #ff0000">value</span>
						<span style="COLOR: #0000ff">="#{msgs.editColumn}"</span>
						<span style="COLOR: #ff0000">
								<br />
						</span>
						<span style="COLOR: #008080">10</span>
						<span style="COLOR: #ff0000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">11</span>
						<span style="COLOR: #ff0000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                style</span>
						<span style="COLOR: #0000ff">="font-weight: bold"</span>
						<span style="COLOR: #0000ff">/&gt;</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">12</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">13</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </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 />
						</span>
						<span style="COLOR: #008080">14</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">15</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">16</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">17</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">h:selectBooleanCheckbox </span>
						<span style="COLOR: #ff0000">value</span>
						<span style="COLOR: #0000ff">="#{name.editable}"</span>
						<span style="COLOR: #ff0000">
								<br />
						</span>
						<span style="COLOR: #008080">18</span>
						<span style="COLOR: #ff0000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">19</span>
						<span style="COLOR: #ff0000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            onclick</span>
						<span style="COLOR: #0000ff">="submit()"</span>
						<span style="COLOR: #0000ff">/&gt;</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">20</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">21</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </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 />
						</span>
						<span style="COLOR: #008080">22</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">23</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">24</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">25</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">%-- </span>
						<span style="COLOR: #ff0000">last name column --%</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">26</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">27</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </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 />
						</span>
						<span style="COLOR: #008080">28</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">29</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" /><br /></span>
						<span style="COLOR: #008080">30</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">31</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">h:inputText </span>
						<span style="COLOR: #ff0000">value</span>
						<span style="COLOR: #0000ff">='#{name.last}'<br /></span>
						<span style="COLOR: #008080">32</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">33</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
						<span style="COLOR: #ff0000">rendered</span>
						<span style="COLOR: #0000ff">='#{name.editable}'<br /></span>
						<span style="COLOR: #008080">34</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">35</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
						<span style="COLOR: #ff0000">size</span>
						<span style="COLOR: #0000ff">='10'/&gt;<br /></span>
						<span style="COLOR: #008080">36</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">37</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">38</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">39</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
						<span style="COLOR: #ff0000">&lt;h:outputText value</span>
						<span style="COLOR: #0000ff">='#{name.last}'<br /></span>
						<span style="COLOR: #008080">40</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">41</span>
						<span style="COLOR: #0000ff">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
						<span style="COLOR: #ff0000">rendered</span>
						<span style="COLOR: #0000ff">='#{not </span>
						<span style="COLOR: #ff0000">name.editable}'</span>
						<span style="COLOR: #0000ff">/&gt;</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">42</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">43</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </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 />
						</span>
						<span style="COLOR: #008080">44</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">45</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    <img src="http://www.blogjava.net/images/dot.gif" /><br /></span>
						<span style="COLOR: #008080">46</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">47</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">h:dataTable</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">48</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">49</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">p</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">50</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">51</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">h:commandButton </span>
						<span style="COLOR: #ff0000">value</span>
						<span style="COLOR: #0000ff">="#{msgs.saveChangesButtonText}"</span>
						<span style="COLOR: #0000ff">/&gt;</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">52</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">53</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
				</span>
		</div>
		<p>事实上，h:dataTable不是直接操作集合对象的，而是通过Table Models来实现的。所以我们可以通过getWrappedData()和setWrappedData（）来实现对modle中对象的操作，比如下面的一个方法：<br /><font size="2"></font></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 id="Code_Closed_Image_120857" onclick="this.style.display='none'; Code_Closed_Text_120857.style.display='none'; Code_Open_Image_120857.style.display='inline'; Code_Open_Text_120857.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" />
				<img id="Code_Open_Image_120857" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_120857.style.display='none'; Code_Closed_Image_120857.style.display='inline'; Code_Closed_Text_120857.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" />
				<span id="Code_Closed_Text_120857" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
				</span>
				<span id="Code_Open_Text_120857" style="DISPLAY: none">
						<br />
						<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
						<span style="COLOR: #008080"> 1</span>
						<img id="Codehighlighter1_28_522_Open_Image" onclick="this.style.display='none'; Codehighlighter1_28_522_Open_Text.style.display='none'; Codehighlighter1_28_522_Closed_Image.style.display='inline'; Codehighlighter1_28_522_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_28_522_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_28_522_Closed_Text.style.display='none'; Codehighlighter1_28_522_Open_Image.style.display='inline'; Codehighlighter1_28_522_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> String deleteNames() </span>
						<span id="Codehighlighter1_28_522_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" />
						</span>
						<span id="Codehighlighter1_28_522_Open_Text">
								<span style="COLOR: #000000">{<br /></span>
								<span style="COLOR: #008080"> 2</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080"> 3</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #0000ff">if</span>
								<span style="COLOR: #000000"> (</span>
								<span style="COLOR: #000000">!</span>
								<span style="COLOR: #000000">getAnyNamesMarkedForDeletion())<br /></span>
								<span style="COLOR: #008080"> 4</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080"> 5</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">;<br /></span>
								<span style="COLOR: #008080"> 6</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080"> 7</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080"> 8</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080"> 9</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    Name[] currentNames </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> (Name[]) model.getWrappedData();<br /></span>
								<span style="COLOR: #008080">10</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080">11</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    Name[] newNames </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> Name[currentNames.length </span>
								<span style="COLOR: #000000">-</span>
								<span style="COLOR: #000000">
										<br />
								</span>
								<span style="COLOR: #008080">12</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080">13</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        getNumberOfNamesMarkedForDeletion()];<br /></span>
								<span style="COLOR: #008080">14</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080">15</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080">16</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080">17</span>
								<span style="COLOR: #000000">
										<img id="Codehighlighter1_315_461_Open_Image" onclick="this.style.display='none'; Codehighlighter1_315_461_Open_Text.style.display='none'; Codehighlighter1_315_461_Closed_Image.style.display='inline'; Codehighlighter1_315_461_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_315_461_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_315_461_Closed_Text.style.display='none'; Codehighlighter1_315_461_Open_Image.style.display='inline'; Codehighlighter1_315_461_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
								<span style="COLOR: #0000ff">for</span>
								<span style="COLOR: #000000">(</span>
								<span style="COLOR: #0000ff">int</span>
								<span style="COLOR: #000000"> i</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">, j </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">; i </span>
								<span style="COLOR: #000000">&lt;</span>
								<span style="COLOR: #000000"> currentNames.length; </span>
								<span style="COLOR: #000000">++</span>
								<span style="COLOR: #000000">i) </span>
								<span id="Codehighlighter1_315_461_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" />
								</span>
								<span id="Codehighlighter1_315_461_Open_Text">
										<span style="COLOR: #000000">{<br /></span>
										<span style="COLOR: #008080">18</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
												<br />
										</span>
										<span style="COLOR: #008080">19</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Name name </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> (Name) currentNames[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" />
												<br />
										</span>
										<span style="COLOR: #008080">21</span>
										<span style="COLOR: #000000">
												<img id="Codehighlighter1_408_454_Open_Image" onclick="this.style.display='none'; Codehighlighter1_408_454_Open_Text.style.display='none'; Codehighlighter1_408_454_Closed_Image.style.display='inline'; Codehighlighter1_408_454_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
												<img id="Codehighlighter1_408_454_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_408_454_Closed_Text.style.display='none'; Codehighlighter1_408_454_Open_Image.style.display='inline'; Codehighlighter1_408_454_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
										<span style="COLOR: #0000ff">if</span>
										<span style="COLOR: #000000"> (</span>
										<span style="COLOR: #000000">!</span>
										<span style="COLOR: #000000">name.isMarkedForDeletion()) </span>
										<span id="Codehighlighter1_408_454_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" />
										</span>
										<span id="Codehighlighter1_408_454_Open_Text">
												<span style="COLOR: #000000">{<br /></span>
												<span style="COLOR: #008080">22</span>
												<span style="COLOR: #000000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
														<br />
												</span>
												<span style="COLOR: #008080">23</span>
												<span style="COLOR: #000000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            newNames[j</span>
												<span style="COLOR: #000000">++</span>
												<span style="COLOR: #000000">] </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> name;<br /></span>
												<span style="COLOR: #008080">24</span>
												<span style="COLOR: #000000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
														<br />
												</span>
												<span style="COLOR: #008080">25</span>
												<span style="COLOR: #000000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
										</span>
										<span style="COLOR: #000000">
												<br />
										</span>
										<span style="COLOR: #008080">26</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
												<br />
										</span>
										<span style="COLOR: #008080">27</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
								</span>
								<span style="COLOR: #008080">28</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080">29</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    model.setWrappedData(newNames);<br /></span>
								<span style="COLOR: #008080">30</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080">31</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">;<br /></span>
								<span style="COLOR: #008080">32</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080">33</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />   }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">34</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">35</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />}<br /></span>
						<span style="COLOR: #008080">36</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">37</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
				</span>
		</div>
		<p>同时如果我们要对集合数据进行排序和过滤的话，我们必须通过继承一种table model来实现。</p>
<img src ="http://www.blogjava.net/donglei/aggbug/72524.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/donglei/" target="_blank">土牛小屋</a> 2006-09-28 12:12 <a href="http://www.blogjava.net/donglei/articles/72524.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>事件处理</title><link>http://www.blogjava.net/donglei/articles/72491.html</link><dc:creator>土牛小屋</dc:creator><author>土牛小屋</author><pubDate>Thu, 28 Sep 2006 02:32:00 GMT</pubDate><guid>http://www.blogjava.net/donglei/articles/72491.html</guid><wfw:comment>http://www.blogjava.net/donglei/comments/72491.html</wfw:comment><comments>http://www.blogjava.net/donglei/articles/72491.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/donglei/comments/commentRss/72491.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/donglei/services/trackbacks/72491.html</trackback:ping><description><![CDATA[
		<p class="bodycopy">JSP应用程序是事件驱动型的程序。在JSF中处理事件令人惊奇的简单。以下是处理步骤：</p>
		<p>
		</p>
		<ol>
				<li class="bodycopy">编写事件监听器。 
</li>
				<li class="bodycopy">在程序目录下的WEB-INF/classes or WEB-INF/lib目录中部署事件监听器。 
</li>
				<li class="bodycopy">在表示组件（其事件被捕获）的标记中，使用Core定制标记库中定义的action_listener或者 valuechange_listener标记。 </li>
		</ol>
		<p>
		</p>
		<p>
				<span class="boldbodycopy">在JSF中的事件对象。</span>
				<span class="bodycopy">JSF中的所有事件对象必须提供javax.faces .event.FacesEvent类，以便这些事件被请求处理生命周期支持。FacesEvent类是java.util.EventObject的子类，并添加了getComponent方法，该方法返回引发该事件的UIComponent组件。</span>
		</p>
		<p class="bodycopy">FacesEvent类有两个子类：ActionEvent和 ValueChangeEvent。ActionEvent类激活诸如UICommand组件之类的UI组件。<br /><br />ValueChangeEvent类会发出一个通知，告知本地UIInput组件的值被修改了。然而，如果新值没有被成功地验证为合法的，则不会发出ValueChangeEvent通知。被加入到该类中的两个重要方法是getOldValue 和 getNewValue。getOldValue方法返回引发该事件的组件的旧值。getNewValue方法返回相应的新值。这两种方法的返回值类型都是java .lang.Object。<br />第三，JSF中的事件监听器。</p>
		<p>
				<span class="boldbodycopy">为捕获一个JSF事件，</span>
				<span class="bodycopy">需要使用一个事件监听器。JSF程序中的所有监听器都必须实现javax.faces.event.FacesListener接口。该接口提供java.util.EventListener接口，后者是必须由所有Java事件监听器实现的接口。</span>
				<br />
				<br />
				<span class="bodycopy">Faces Listener接口有两个子接口：ActionListener 和 ValueChangeListener。ActionListener接口是为了捕获ActionEvent而必须被实现的接口。该接口添加了一个新的方法--processAction--该方法请求处理生命周期来调用。当为之注册了ActionListener 的ActionEvent发生事件时，就会调用processAction。processAction方法的代码如下：<br /></span>
		</p>
		<p>
		</p>
		<pre>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<span style="COLOR: #008080">1</span>
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> processAction(ActionEvent <br /></span>
						<span style="COLOR: #008080">2</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  event) <br /></span>
						<span style="COLOR: #008080">3</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">throws</span>
						<span style="COLOR: #000000"> AbortProcessingException<br /></span>
						<span style="COLOR: #008080">4</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
				</div>
		</pre>
		<p>
		</p>
		<p class="bodycopy">ValueChangeListener接口是为了捕获ValueChangeEvent而实现的接口。该接口添加了一个方法：processValueChange。当ValueChangeEvent动作被其监听者监听到时，就会调用processValueChange方法。processValueChange方法的代码如下：</p>
		<p>
		</p>
		<pre>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
						<span style="COLOR: #008080">1</span>
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> processValueChange(ValueChangeEvent<br /></span>
						<span style="COLOR: #008080">2</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  event) <br /></span>
						<span style="COLOR: #008080">3</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #0000ff">throws</span>
						<span style="COLOR: #000000"> AbortProcessingException<br /></span>
						<span style="COLOR: #008080">4</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">5</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
				</div>
		</pre>
<img src ="http://www.blogjava.net/donglei/aggbug/72491.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/donglei/" target="_blank">土牛小屋</a> 2006-09-28 10:32 <a href="http://www.blogjava.net/donglei/articles/72491.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在JSP页面中使用UI组件</title><link>http://www.blogjava.net/donglei/articles/72490.html</link><dc:creator>土牛小屋</dc:creator><author>土牛小屋</author><pubDate>Thu, 28 Sep 2006 02:29:00 GMT</pubDate><guid>http://www.blogjava.net/donglei/articles/72490.html</guid><wfw:comment>http://www.blogjava.net/donglei/comments/72490.html</wfw:comment><comments>http://www.blogjava.net/donglei/articles/72490.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/donglei/comments/commentRss/72490.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/donglei/services/trackbacks/72490.html</trackback:ping><description><![CDATA[
		<p class="bodycopy">JSF提供两个定制标记库来帮助用户快速编写Web应用程序：HTML和Core。HTML定制标记库定义了用来表示UI组件的标记。Core定制标记库使用具有组件的验证器（validators）定义了注册事件处理器的核心行动，以及其他一些行动。你可以在自己的JSF应用程序的JSP页面中使用这两个库的标记。</p>
		<p>
				<span class="bodycopy">为了在JSP页面中使用HTML和Core定制标记库，必须在页面中包含如下所示的taglib指令：</span>
				<br />
		</p>
		<p>
		</p>
		<pre>&lt;%@ taglib uri="http://java.sun.com
/jsf/html/" prefix="h" %&gt;
&lt;%@ taglib uri="http://java.sun.com/
jsf/core/" prefix="f" %&gt;
</pre>
		<p>
		</p>
		<p>
				<span class="bodycopy">Prefix的属性值可以是任意值。但是，根据惯例，最好是使用"h"和"f"。</span>
		</p>
		<p class="bodycopy">在JSF应用程序中编写JSP页面是每一个页面制作者的责任。除了布置组件之外，他们的责任还包括把组件绑定到模型对象数据并且把Core标记（诸如事件监听器和验证器）添加到组件标记中。</p>
		<p class="bodycopy">在HTML定制标记库中有25个标记。每个组件都呈现为一个HTML元件，而多个标记被呈现为同一个HTML元件。<a href="http://www.oracle.com/global/cn/oramag/oracle/04-mar/o24dev_jsf.html#t1">表1</a>列出了HTML定制标记库中的标记。<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">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">标记 说明 <br /></span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Column 在UIData组件内表示一个数据列。 <br /></span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />command_button 表示一个向服务器提交表单的按钮。 <br /></span>
				<span style="COLOR: #008080"> 4</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />command_link 表示一个指向另一页面或者本页面内其他位置的超链接。 <br /></span>
				<span style="COLOR: #008080"> 5</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />data_table 表示一个支持将数据绑定到一个数据对象的集合上的表。 <br /></span>
				<span style="COLOR: #008080"> 6</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Form 表示一个表单。 <br /></span>
				<span style="COLOR: #008080"> 7</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />graphic_image 显示一张图片。 <br /></span>
				<span style="COLOR: #008080"> 8</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />input_hidden 表示一个隐藏的元件。 <br /></span>
				<span style="COLOR: #008080"> 9</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />input_secret 表示一个密码输入框。 <br /></span>
				<span style="COLOR: #008080">10</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />input_text 表示一个可接受单个字符串的文本输入框。 <br /></span>
				<span style="COLOR: #008080">11</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />input_textarea 表示一个可接受多个字符串的文本输入区。 <br /></span>
				<span style="COLOR: #008080">12</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Message 显示给定组件的信息。 <br /></span>
				<span style="COLOR: #008080">13</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Messages 表示一个从FacesContext中获取消息并且将其显示给用户的组件。 <br /></span>
				<span style="COLOR: #008080">14</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />output_label 显示文本。 <br /></span>
				<span style="COLOR: #008080">15</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />output_link 显示一个超链接。 <br /></span>
				<span style="COLOR: #008080">16</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />output_message 显示给定组件的信息。 <br /></span>
				<span style="COLOR: #008080">17</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />output_text 显示一行文本。 <br /></span>
				<span style="COLOR: #008080">18</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />panel_grid 显示一张表。 <br /></span>
				<span style="COLOR: #008080">19</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />panel_group 将一个组件集合分组。 <br /></span>
				<span style="COLOR: #008080">20</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />selectboolean_checkbox 表示一个单选文本框。 <br /></span>
				<span style="COLOR: #008080">21</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />selectmany_checkboxlist 显示一套复选框，用户从中可以选择多个值。 <br /></span>
				<span style="COLOR: #008080">22</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />selectmany_listbox 表示一个多选下拉选择框，用户从中可以选择多个项目。 <br /></span>
				<span style="COLOR: #008080">23</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />selectmany_menu 表示一个多选项目列表，用户从中可以选择多个项目。 <br /></span>
				<span style="COLOR: #008080">24</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />selectone_listbox 表示一个单选下拉选择框，用户从中只能选择一个项目。 <br /></span>
				<span style="COLOR: #008080">25</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />selectone_menu 表示单选项目列表，用户从中只能选择一个项目。 <br /></span>
				<span style="COLOR: #008080">26</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />selectone_radio 表示一套单选按钮。 <br /></span>
				<span style="COLOR: #008080">27</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<br />
		<center>表1. HTML定制标记库 <br /></center>
<img src ="http://www.blogjava.net/donglei/aggbug/72490.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/donglei/" target="_blank">土牛小屋</a> 2006-09-28 10:29 <a href="http://www.blogjava.net/donglei/articles/72490.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>