<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>foxgst</title>
    <description></description>
    <link>http://foxgst.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
          <item>
        <title>will_paginate分页插件</title>
        <author>foxgst</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://foxgst.javaeye.com">foxgst</a>&nbsp;
                    链接：<a href="http://foxgst.javaeye.com/blog/168489" style="color:red;">http://foxgst.javaeye.com/blog/168489</a>&nbsp;
          发表时间: 2008年03月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          为了使用will_paginate，查过一些资料。<br />由于是初学，官方的资料看得不明不白。<br />参数比较全的示例参见 http://hideto.javaeye.com/blog/108118。<br /><br /><br />附件为will_paginate分页插件。
          <br/><br/>
          <span style="color:red;">
            <a href="http://foxgst.javaeye.com/blog/168489#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 05 Mar 2008 23:06:24 +0800</pubDate>
        <link>http://foxgst.javaeye.com/blog/168489</link>
        <guid>http://foxgst.javaeye.com/blog/168489</guid>
      </item>
          <item>
        <title>T5.0.6 扩展Grid列的方法</title>
        <author>foxgst</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://foxgst.javaeye.com">foxgst</a>&nbsp;
                    链接：<a href="http://foxgst.javaeye.com/blog/140105" style="color:red;">http://foxgst.javaeye.com/blog/140105</a>&nbsp;
          发表时间: 2007年11月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>正在学习Tapestry中，根据搜索的资料和情况发布学习心得，目前使用的Tapestry版本是5.0.6。<br />
<br />
<strong>参考资料：</strong><br />
1. <a href="http://www.javaeye.com/topic/114754" title=" T5 技巧 2：为Grid组件的每一行增加“删除/修改”链接。">主题: T5 技巧 2：为Grid组件的每一行增加&ldquo;删除/修改&rdquo;链接。</a><br />
&nbsp;&nbsp; 针对T5.0.5版本，方法稍微有点复杂（Order排序也已经过时）。目前版本是5.0.6，另给出了一个通用的简便的方法。<br />
2. <a href="http://www.tapestryforums.com/viewtopic.php?f=5&amp;t=23130&amp;start=0&amp;st=0&amp;sk=t&amp;sd=a&amp;sid=82ee65cd6c719bcb3289a0c0e5bd74cc">Adding modify/delete actions to a Grid</a><br />
&nbsp;&nbsp; 虽然贴的是代码，但是对于在网页中如何使用没有给出实现。<br />
<br />
<strong>原理：</strong><br />
dengyin2000已经把原理说得很清楚了，扩展BeanModelSource以实现复杂的表格(Grid)显示。<br />
<br />
<strong>操作过程：</strong><br />
1. 创建需要的PropertyConduit，也就是新列（可以复用显示多列）；<br />
2. 修改Page类，增加Model的获取方法；<br />
3. 修改相应网页，使用Grid显示数据（需要注意的是，新建列的显示需加入自定义的代码实现）。<br />
<br />
<strong>主要代码：</strong><br />
1. 新建需要的Property </p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j">
    <li class="alt"><span><span class="comment">//PropertyConduit&nbsp;CLASS&nbsp;-&nbsp;implements&nbsp;the&nbsp;PropertyConduit&nbsp;Interface</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span><span class="keyword">class</span><span>&nbsp;Action</span></span><span><span>Property</span></span><span><span> </span><span class="keyword">implements</span><span>&nbsp;PropertyConduit&nbsp;{&nbsp;&nbsp;</span></span> </li>
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;Object&nbsp;get(Object&nbsp;arg0)&nbsp;{</span><span class="keyword">return</span><span>&nbsp;</span><span class="string">&quot;&quot;</span><span>;}&nbsp;&nbsp;</span></span> </li>
    <li class=""><span><span class="keyword">public</span><span>&nbsp;Class&nbsp;getPropertyType()&nbsp;{</span><span class="keyword">return</span><span>&nbsp;String.</span><span class="keyword">class</span><span>;}&nbsp;&nbsp;</span></span> </li>
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;set(Object&nbsp;arg0,&nbsp;Object&nbsp;arg1)&nbsp;{}&nbsp;&nbsp;</span></span> </li>
    <li class=""><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">extends</span><span>&nbsp;Annotation&gt;&nbsp;T&nbsp;getAnnotation(Class<t></t>&nbsp;arg0)&nbsp;{</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">null</span><span>;}&nbsp;&nbsp;</span></span> </li>
    <li class="alt"><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<br />
&nbsp;2. 修改Page类User，新增代码如下：<br />
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j">
    <li class="alt"><span><span class="annotation">@Inject</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span><span class="keyword">private</span><span>&nbsp;BeanModelSource&nbsp;_modelSource;&nbsp;&nbsp;</span></span> </li>
    <li class="alt"><span><span class="annotation">@Inject</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span><span class="keyword">private</span><span>&nbsp;ComponentResources&nbsp;_resources;&nbsp;&nbsp;</span></span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span><span class="keyword">public</span><span>&nbsp;BeanModel&nbsp;getModelForGrid()&nbsp;{&nbsp;&nbsp;</span></span> </li>
    <li class="alt"><span>PropertyConduit&nbsp;ap&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;Action</span></span><span><span>Property</span></span><span><span>();&nbsp;&nbsp;</span></span> </li>
    <li class=""><span>BeanModel&nbsp;result&nbsp;=&nbsp;_modelSource.create(User.<span class="keyword">class</span><span>,&nbsp;</span><span class="keyword">false</span><span>,&nbsp;_resources);</span></span> </li>
    <li class=""><span><span>result.<font face="Courier New" style="BACKGROUND-COLOR: #fafafa">add(&quot;action&quot;, ap).label(&quot;操作&quot;).sortable(false);</font>&nbsp;&nbsp;</span></span> </li>
    <li class="">// <font face="Courier New" style="BACKGROUND-COLOR: #fafafa">你也可以使用如下方法把action列放在uuid(在User类中必须要有可访问的getUuid()方法)列的前面</font> </li>
    <li class="">// result.<font face="Courier New" style="BACKGROUND-COLOR: #fafafa">add(RelativePosition.BEFORE, &quot;uuid&quot;, &quot;action&quot;, ap).label(&quot;操作&quot;).sortable(false);</font>&nbsp; </li>
    <li class="">// 你也可以复用ap再加入新列 </li>
    <li class="">// result.<font face="Courier New" style="BACKGROUND-COLOR: #fafafa">add(&quot;chk&quot;, ap).label(&quot;选择&quot;).sortable(false);</font>&nbsp;&nbsp; </li>
    <li class="alt"><span><span class="keyword">return</span><span>&nbsp;result;&nbsp;&nbsp;</span></span> </li>
    <li class=""><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p><br />
3. 修改相应网页UserList.tml，使用Grid的代码如下：</p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">table</span><span>&nbsp;</span><span class="attribute">t:type</span><span>=</span><span class="attribute-value">&quot;Grid&quot;</span><span>&nbsp;</span><span class="attribute">model</span><span>=</span><span class="attribute-value">&quot;modelForGrid&quot;</span><span>&nbsp;</span><span class="attribute">source</span><span>=</span><span class="attribute-value">&quot;users&quot;</span><span>&nbsp;</span><span class="attribute">row</span><span>=</span><span class="attribute-value">&quot;currentUser&quot;</span><span>&nbsp;</span><span class="attribute">pagerPosition</span><span>=</span><span class="attribute-value">&quot;bottom&quot;</span><span>&nbsp;</span><span class="attribute">rowsPerPage</span><span>=</span><span class="attribute-value">&quot;5&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">t:parameter</span><span>&nbsp;</span><span class="attribute">t:name</span><span>=</span><span class="attribute-value">&quot;actionCell&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">a</span><span>&nbsp;</span><span class="attribute">t:type</span><span>=</span><span class="attribute-value">&quot;ActionLink&quot;</span><span>&nbsp;</span><span class="attribute">t:id</span><span>=</span><span class="attribute-value">&quot;delete&quot;</span><span>&nbsp;</span><span class="attribute">context</span><span>=</span><span class="attribute-value">&quot;currentUser.uuid&quot;</span><span class="tag">&gt;</span><span>删除<span class="tag"><span class="tag-name">a</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span> </span><span></span><span class="tag">&lt;</span><span class="tag-name">a</span><span>&nbsp;</span><span class="attribute">t:type</span><span>=</span><span class="attribute-value">&quot;ActionLink&quot;</span><span>&nbsp;</span><span class="attribute">t:id</span><span>=</span><span class="attribute-value">&quot;modify&quot;</span><span>&nbsp;</span><span class="attribute">context</span><span>=</span><span class="attribute-value">&quot;currentUser.uuid&quot;</span><span class="tag">&gt;</span><span>修改<span class="tag"><span class="tag-name">a</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></span></li>
    <li class="alt"><span></span><span class="tag"><span class="tag-name"><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class=""><span></span><span class="tag"><span class="tag-name"><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
</ol>
</div>
<p>&nbsp;<strong>部分完整代码</strong></p>
<p>1. Page类UserList.java</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">import</span><span>&nbsp;java.util.List; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;org.apache.tapestry.Block; &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;org.apache.tapestry.ComponentResources; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;org.apache.tapestry.PropertyConduit; &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;org.apache.tapestry.beaneditor.BeanModel; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;org.apache.tapestry.ioc.annotations.Inject; &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;org.apache.tapestry.services.BeanModelSource; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;com.senlang.sample.tapestryfive.demo.model.User; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;com.senlang.sample.tapestryfive.demo.service.UserService; &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;com.senlang.sample.tapestryfive.demo.util.ActionProperty; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;UserList&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="annotation">@Inject</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;Block&nbsp;_noData; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="annotation">@Inject</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;UserService&nbsp;_usrv; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;User&nbsp;_currentUser; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="annotation">@Inject</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;BeanModelSource&nbsp;_modelSource; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="annotation">@Inject</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;ComponentResources&nbsp;_resources;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;List<user></user>&nbsp;getUsers()&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;_usrv.getAllUser(); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;BeanModel&nbsp;getModelForGrid(){&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PropertyConduit&nbsp;ap&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;ActionProperty();&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BeanModel&nbsp;result&nbsp;=&nbsp;_modelSource.create(User.</span><span class="keyword">class</span><span>,&nbsp;</span><span class="keyword">false</span><span>,&nbsp;_resources);&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.add(</span><span class="string">&quot;action&quot;</span><span>,&nbsp;ap).label(</span><span class="string">&quot;操作&quot;</span><span>).sortable(</span><span class="keyword">false</span><span>);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;你也可以使用如下方法把action列放在uuid(在User类中必须要有可访问的getUuid()方法)列的前面&nbsp; </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;result.add(RelativePosition.BEFORE,&nbsp;&quot;uuid&quot;,&nbsp;&quot;action&quot;,&nbsp;ap).label(&quot;操作&quot;).sortable(false);&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;你也可以服用ap再加入新列&nbsp; </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;result.add(&quot;chk&quot;,&nbsp;ap).label(&quot;选择&quot;).sortable(false);&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;result; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;删除操作 </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;onActionFromDelete(String&nbsp;uuid)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(String.format(</span><span class="string">&quot;delete&nbsp;uuid=%s&quot;</span><span>,&nbsp;uuid)); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;修改操作 </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;onActionFromModify(String&nbsp;uuid)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(String.format(</span><span class="string">&quot;modify&nbsp;uuid=%s&quot;</span><span>,&nbsp;uuid)); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;Block&nbsp;getNoData()&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;_noData; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setNoData(Block&nbsp;noData)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_noData&nbsp;=&nbsp;noData; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;UserService&nbsp;getUsrv()&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;_usrv; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setUsrv(UserService&nbsp;usrv)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_usrv&nbsp;=&nbsp;usrv; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;User&nbsp;getCurrentUser()&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;_currentUser; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setCurrentUser(User&nbsp;currentUser)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_currentUser&nbsp;=&nbsp;currentUser; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;BeanModelSource&nbsp;getModelSource()&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;_modelSource; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setModelSource(BeanModelSource&nbsp;modelSource)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_modelSource&nbsp;=&nbsp;modelSource; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;ComponentResources&nbsp;getResources()&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;_resources; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setResources(ComponentResources&nbsp;resources)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_resources&nbsp;=&nbsp;resources; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>2. 网页UserList.tml代码</p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span><!--CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</sp--><span>&nbsp;</span></span>&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">html</span><span>&nbsp;</span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">&quot;http://www.w3.org/1999/xhtml&quot;</span><span>&nbsp;</span><span class="attribute">xmlns:t</span><span>=</span><span class="attribute-value">&quot;http://tapestry.apache.org/schema/tapestry_5_0_0.xsd&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">meta</span><span>&nbsp;</span><span class="attribute">http-equiv</span><span>=</span><span class="attribute-value">&quot;Content-Type&quot;</span><span>&nbsp;</span><span class="attribute">content</span><span>=</span><span class="attribute-value">&quot;text/html;&nbsp;charset=utf-8&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>Samples&nbsp;-&nbsp;User&nbsp;List<span class="tag"><span class="tag-name">title</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class=""><span></span><span class="tag"><span class="tag-name"><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">t:block</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;nodata&quot;</span><span class="tag">&gt;</span><span>没有找到数据！<span class="tag"><span class="tag-name">t:block</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>List&nbsp;All&nbsp;Users<span class="tag"><span class="tag-name">h1</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">table</span><span>&nbsp;</span><span class="attribute">t:type</span><span>=</span><span class="attribute-value">&quot;Grid&quot;</span><span>&nbsp;</span><span class="attribute">model</span><span>=</span><span class="attribute-value">&quot;modelForGrid&quot;</span><span>&nbsp;</span><span class="attribute">source</span><span>=</span><span class="attribute-value">&quot;users&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">row</span><span>=</span><span class="attribute-value">&quot;currentUser&quot;</span><span>&nbsp;</span><span class="attribute">pagerPosition</span><span>=</span><span class="attribute-value">&quot;bottom&quot;</span><span>&nbsp;</span><span class="attribute">rowsPerPage</span><span>=</span><span class="attribute-value">&quot;5&quot;</span><span>&nbsp;</span><span class="attribute">empty</span><span>=</span><span class="attribute-value">&quot;nodata&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">t:parameter</span><span>&nbsp;</span><span class="attribute">t:name</span><span>=</span><span class="attribute-value">&quot;actionCell&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">a</span><span>&nbsp;</span><span class="attribute">t:type</span><span>=</span><span class="attribute-value">&quot;ActionLink&quot;</span><span>&nbsp;</span><span class="attribute">t:id</span><span>=</span><span class="attribute-value">&quot;delete&quot;</span><span>&nbsp;</span><span class="attribute">context</span><span>=</span><span class="attribute-value">&quot;currentUser.uuid&quot;</span><span class="tag">&gt;</span><span>删除&lt;</span><span class="tag"><span class="tag-name">a</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">a</span><span>&nbsp;</span><span class="attribute">t:type</span><span>=</span><span class="attribute-value">&quot;ActionLink&quot;</span><span>&nbsp;</span><span class="attribute">t:id</span><span>=</span><span class="attribute-value">&quot;modify&quot;</span><span>&nbsp;</span><span class="attribute">context</span><span>=</span><span class="attribute-value">&quot;currentUser.uuid&quot;</span><span class="tag">&gt;</span><span>修改&lt;</span><span class="tag"><span class="tag-name">a</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag"><span class="tag-name">t:parameter</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class=""><span class="tag"><span class="tag"><span class="tag"><span class="tag-name"></span></span></span></span></li>
</ol>
</div>
<p>&nbsp;3. User类的实现代码</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;User&nbsp;{ &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;String&nbsp;_uuid; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;String&nbsp;_username; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;String&nbsp;_password; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;getUuid()&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;_uuid; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setUuid(String&nbsp;uuid)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_uuid&nbsp;=&nbsp;uuid; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;getUsername()&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;_username; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setUsername(String&nbsp;username)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_username&nbsp;=&nbsp;username; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;getPassword()&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;_password; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setPassword(String&nbsp;password)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_password&nbsp;=&nbsp;password; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
          <br/><br/>
          <span style="color:red;">
            <a href="http://foxgst.javaeye.com/blog/140105#comments" style="color:red;">已有 <strong>3</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 13 Nov 2007 11:11:00 +0800</pubDate>
        <link>http://foxgst.javaeye.com/blog/140105</link>
        <guid>http://foxgst.javaeye.com/blog/140105</guid>
      </item>
      </channel>
</rss>