⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tablemodel 类别.htm

📁 良葛格學習筆記,《jsf入门》简体中文版,对学习JSF有帮助
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>新建网页 1</title>
</head>

<body>

<p>TableModel 类别</p>
<div id="PageContent">
	<table cellSpacing="0" cellPadding="0" width="100%" border="0" id="table1">
		<tr>
			<td class="pagebody" vAlign="top">
			<table style="CLEAR: both" cellSpacing="0" cellPadding="0" width="100%" border="0" id="table2">
				<tr>
					<td class="pagecontent" vAlign="top" width="100%">
					<div class="wiki-content">
						在 <span class="nobr">
						<a title="Visit page outside Confluence" rel="nofollow" href="http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2796">
						簡單的表格<sup><img class="rendericon" height="7" alt="" src="images/linkext7.gif" width="7" align="absMiddle" border="0"></sup></a></span> 
						中曾經提過,&lt;h:dataTable&gt;可以列舉以下幾種型態的資料:<ul>
							<li>陣列 
							</li>
							<li>java.util.List的實例 
							</li>
							<li>java.sql.ResultSet的實例 
							</li>
							<li>javax.servlet.jsp.jstl.sql.Result的實例 
							</li>
							<li>javax.faces.model.DataModel的實例 </li>
						</ul>
						<p>
						  對於前四種型態,JSF實際上是以javax.faces.model.DataModel加以包裝,DataModel是個抽象類別,其子類別都是位於 
						javax.faces.model這個package下:</p>
						<ul>
							<li>ArrayDataModel 
							</li>
							<li>ListDataModel 
							</li>
							<li>ResultDataModel 
							</li>
							<li>ResultSetDataModel 
							</li>
							<li>ScalarDataModel </li>
						</ul>
						<p>
						  如果您想要對表格資料有更多的控制,您可以直接使用DataModel來設定表格資料,呼叫DataModel的setWrappedObject()方法可以讓您設定對應型態的資料,呼叫getWrappedObject()則可以取回資料,例如:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeHeader" style="BORDER-BOTTOM-STYLE: solid">
								<b>TableBean.java</b></div>
							<div class="codeContent">
								<pre class="code-java"><span class="code-keyword">package</span> onlyfun.caterpillar;
 
 <span class="code-keyword">import</span> java.util.*;
 <span class="code-keyword">import</span> javax.faces.model.DataModel;
 <span class="code-keyword">import</span> javax.faces.model.ListDataModel;
 
 <span class="code-keyword">public</span> class TableBean {
    <span class="code-keyword">private</span> DataModel model;
    <span class="code-keyword">private</span> <span class="code-object">int</span> rowIndex = -1;
    
    <span class="code-keyword">public</span> DataModel getUsers() {
        <span class="code-keyword">if</span>(model == <span class="code-keyword">null</span>) {
            model = <span class="code-keyword">new</span> ListDataModel();
            model.setWrappedData(getUserList());
        }
        
        <span class="code-keyword">return</span> model; 
    }
    
    <span class="code-keyword">private</span> List getUserList() {
        List userList = <span class="code-keyword">new</span> ArrayList();
        userList.add(<span class="code-keyword">new</span> UserBean(<span class="code-quote">&quot;caterpillar&quot;</span>, <span class="code-quote">&quot;123456&quot;</span>));
        userList.add(<span class="code-keyword">new</span> UserBean(<span class="code-quote">&quot;momor&quot;</span>, <span class="code-quote">&quot;654321&quot;</span>));
        userList.add(<span class="code-keyword">new</span> UserBean(<span class="code-quote">&quot;becky&quot;</span>, <span class="code-quote">&quot;7890&quot;</span>));
        
        <span class="code-keyword">return</span> userList;
    }
    
    <span class="code-keyword">public</span> <span class="code-object">int</span> getSelectedRowIndex() {
        <span class="code-keyword">return</span> rowIndex;
    }
    
    <span class="code-keyword">public</span> <span class="code-object">String</span> select() {
        rowIndex = model.getRowIndex();
        <span class="code-keyword">return</span> <span class="code-quote">&quot;success&quot;</span>;
    }
 }</pre>
							</div>
						</div>
						<p>
						  在這個Bean中,我們直接設定DataModel?,將userList設定給它,如您所看到的,我們還可以取得DataModel?的各個變項,在這個例子中,select()將作為點選表格之後的事件處理方法,我們可以藉由DataModel?的getRowIndex 
						()來取得所點選的是哪一row的資料,例如:</p>
						<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
							<div class="codeHeader" style="BORDER-BOTTOM-STYLE: solid">
								<b>index.jsp</b></div>
							<div class="codeContent">
								<pre class="code-java">&lt;%@ taglib uri=<span class="code-quote">&quot;http:<span class="code-comment">//java.sun.com/jsf/html&quot;</span> prefix=&quot;h&quot; %&gt;
</span> &lt;%@ taglib uri=<span class="code-quote">&quot;http:<span class="code-comment">//java.sun.com/jsf/core&quot;</span> prefix=&quot;f&quot; %&gt;
</span> &lt;html&gt;
 &lt;link href=<span class="code-quote">&quot;styles.css&quot;</span> rel=<span class="code-quote">&quot;stylesheet&quot;</span> type=<span class="code-quote">&quot;text/css&quot;</span>/&gt;
 &lt;body&gt;
 &lt;f:view&gt;
    &lt;h:form&gt;           	        	
        &lt;h:dataTable value=<span class="code-quote">&quot;#{tableBean.users}&quot;</span> <span class="code-keyword">var</span>=<span class="code-quote">&quot;user&quot;</span>
		        styleClass=<span class="code-quote">&quot;orders&quot;</span>
		        headerClass=<span class="code-quote">&quot;ordersHeader&quot;</span>
		        rowClasses=<span class="code-quote">&quot;evenColumn,oddColumn&quot;</span>&gt;
            &lt;h:column&gt;
                &lt;f:facet name=<span class="code-quote">&quot;header&quot;</span>&gt;
                    &lt;h:outputText value=<span class="code-quote">&quot;Name&quot;</span>/&gt;
                &lt;/f:facet&gt;
                &lt;h:commandLink action=<span class="code-quote">&quot;#{tableBean.select}&quot;</span>&gt;
                    &lt;h:outputText value=<span class="code-quote">&quot;#{user.name}&quot;</span>/&gt;
                &lt;/h:commandLink&gt;
                    
                &lt;f:facet name=<span class="code-quote">&quot;footer&quot;</span>&gt;
                    &lt;h:outputText value=<span class="code-quote">&quot;****&quot;</span>/&gt;
                &lt;/f:facet&gt;
            &lt;/h:column&gt;
            &lt;h:column&gt;
                &lt;f:facet name=<span class="code-quote">&quot;header&quot;</span>&gt;
                    &lt;h:outputText value=<span class="code-quote">&quot;Password&quot;</span>/&gt;
                &lt;/f:facet&gt;            	
                &lt;h:outputText value=<span class="code-quote">&quot;#{user.password}&quot;</span>/&gt;
                &lt;f:facet name=<span class="code-quote">&quot;footer&quot;</span>&gt;
                    &lt;h:outputText value=<span class="code-quote">&quot;****&quot;</span>/&gt;
                &lt;/f:facet&gt;
            &lt;/h:column&gt;
        &lt;/h:dataTable&gt;
    &lt;/h:form&gt;
    Selected Row: &lt;h:outputText 
                     value=<span class="code-quote">&quot;#{tableBean.selectedRowIndex}&quot;</span>/&gt;
 &lt;/f:view&gt;
 &lt;/body&gt;	
 &lt;/html&gt;</pre>
							</div>
						</div>
						<p>  DataModel的rowIndex是從0開始計算,當處理ActionEvent時,JSF會逐次遞增rowIndex的值,這讓您可以得知目前正在處理的是哪一個row的資料,一個執行的圖示如下:</p>
						<p>
						<img src="images/tableModel-1.jpg" align="middle" border="0"></div>
					<!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"         xmlns:dc="http://purl.org/dc/elements/1.1/"         xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"><rdf:Description    rdf:about="http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2806"    dc:identifier="http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2806"    dc:title="TableModel 類別"    trackback:ping="http://www.javaworld.com.tw/confluence/rpc/trackback/2806"/></rdf:RDF>--><!--    Root decorator: all decisions about how a page is to be decorated via the                    inline decoration begins here.--><!--    Switch based upon the context. However, for now, just delegate to a decorator    identified directly by the context.--></td>
				</tr>
			</table>
			</td>
		</tr>
	</table>
</div>

</body>

</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -