Bryan

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            37 Posts :: 3 Stories :: 24 Comments :: 0 Trackbacks
          DisplayTag

          DisplayTag在表格數據顯示,排序,生成報表,分頁,包括數據的格式化有著強大的功能。使用DisplayTag可以使得程序的前臺開發更容易,更方便。很多的功能可以通過官方網站來獲得相關的信息。

          因為自從DisplayTag在去年發布以后,到現在沒有新的版本,所以在程序的開發過程中,有一些限制,好在都有相關的方法進行替代。

           Multiple Parameters:

          一般的程序在DisplayTag構造link,都需要傳遞多個參數,當使用Decorator的時候,未免會給程序的維護帶來很大的困難,DisplayTag在使用 paramId在傳遞參數的時候只能傳遞一個參數,這給大多數的程序處理帶來了不便,可以通過修改Column類中的private Href getColumnHref(String columnContent) throws ObjectLookupException方法來達到目的,很多人已經提出相關的解決方案,見http://jira.codehaus.org/browse/DISPL-120

          但是畢竟沒有官方的release版本,這樣同樣對以后的維護帶來不便。最快也是最簡潔的辦法就是通過JSTL來構造link,這種方法不再限制只能傳遞一個參數,給程序的處理帶來了方便。使用Struts2 , JSTLDisplayTag結合,構造link會使程序更易維護。下面是簡短的JSTLDisplayTag結合在一起的方法。

           <display:table name="jobz" class="simple" id="row" >
            <display:column  titleKey="label.global.actions" >
                       <c:url var="viewurl" value="/viewJobDetail.action">
                               <c:param name="name" value="${row.name}"/>
                               <c:param name="groupName" value="${row.group}"/>
                       </c:url>
                       <c:url var="exeurl" value="/viewJobDetail.action">
                               <c:param name="name" value="${row.name}"/>
                               <c:param name="groupName" value="${row.group}"/>
                               <c:param name="executeJobAction" value="execute"/>
                       </c:url>
                       <c:url var="editurl" value="/viewJobDetail.action">
                               <c:param name="name" value="${row.name}"/>
                               <c:param name="groupName" value="${row.group}"/>
                               <c:param name="editAction" value="edit"/>
                       </c:url>
                <a href='<c:out value="${viewurl}"/>'><fmt:message key="label.global.view"/></a> |
                <a href='<c:out value="${editurl}"/>'><fmt:message key="label.global.edit"/></a> |
                <a href='<c:out value="${exeurl}"/>'><fmt:message key="label.global.execute"/></a> &nbsp;
            </display:column>
           
            <display:column property="group" titleKey="label.job.group" sortable="true"   />
            <display:column property="name" titleKey="label.job.name" sortable="true"  />
            <display:column property="description" titleKey="label.job.description" />
            <display:column property="jobClass" titleKey="label.job.jobClass" sortable="true"  />
          </display:table>

          通過TableID,我們可以或得相關的數據的值,并動態的生成相關的連接,

          <display:table id="hello" requestURI="hello.action" pagesize="10">
          <display:column title="Entity">
                <c:url var="exeurl" value="/other.action">
               
          <c:param name="entityName" value="${hello.entity}" />
               
          </c:url>

                <a onclick="highlightElem(this,'hello')" target="myFrame" class="linkBlue" href='<c:out value="${exeurl}"/>'><c:out value="${hello.entity}"/>
               
          </a>
          </display:column>
          <display:table/>

          DisplayTag 分頁

          DisplayTag在分頁的時候,Url會出現諸如d-8271310-p=3這樣的參數,d-8271310-p是通過Encode tableID(一個String型的常量)產生的。如果我們需要維護頁面的page的狀態,這一點很重要。下面是相關的代碼。
          HttpServletRequest request=(HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);

           String pageNo=request.getParameter((new org.displaytag.util.ParamEncoder(tableID).encodeParameterName(org.displaytag.tags.TableTagParameters.PARAMETER_PAGE)));

           我們就可以獲得pageNo 3, new org.displaytag.util.ParamEncoder(tableID).encodeParameterName(org.displaytag.tags.TableTagParameters.PARAMETER_PAGE))會生成像d-8271310-p這樣的參數.

          posted on 2008-03-20 15:46 Life is no respector of any genius. 閱讀(1168) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 子长县| 垦利县| 舒兰市| 昌邑市| 抚松县| 西安市| 武陟县| 油尖旺区| 吴忠市| 三河市| 乐昌市| 乌鲁木齐市| 伊吾县| 逊克县| 扶沟县| 什邡市| 牟定县| 佛教| 尉氏县| 宝山区| 泰来县| 和林格尔县| 牡丹江市| 南皮县| 噶尔县| 曲阜市| 黄山市| 石狮市| 新平| 海口市| 松江区| 堆龙德庆县| 洪雅县| 深泽县| 县级市| 清河县| 项城市| 珠海市| 天津市| 南京市| 河池市|