2007年8月16日 星期四

Implicit objects 的顯示方式

一般我們在 displaytag 顯示 List 物件時, 會使用下列的方式:


< id="row" name="${queryHospital}" requesturi="" class="sample" pagesize="">" >

< titlekey="text.id" sortable="true">
< href="hospitalList.do?METHOD=editHospital&id=< c:out value=">" >
< value="${row.id}">< value="${row.id}">< /a >
< /display:column >
......
< /display:table >


也就是將物件以 EL 的方式接收, 並利用 display:table 中的屬性 "id", 來作轉換,如此就可以很容易的在
<> 標籤裡,利用屬性 id 所設定的值, 將List物件的property一一取出.

但由於各家伺服器的Web Container所支援的方式不盡相同, 導致在 displaytag 的 "id" 屬性失效, 如此一來 id 完全無法帶出 property 中的資料.

若您的需求僅是將資料作動態的連結, displaytag 還是有幾個方便好用的屬性,
可以解決該問題.

引用一下上面這段:

< titlekey="text.id" sortable="true">
< href="hospitalList.do?METHOD=editHospital&id=< c:out value=">" >< value="${row.id}">< /a >
< /display:column >

可以簡化成:

< property="id" href="hospitalList.do?METHOD=editHospital" titlekey="text.id" paramid="id" paramproperty="id" sortable="true">

該屬性很簡單明瞭, 尤其 paramProperty 可以讓我們動態的去呼叫 Property, 而使用 href, paramId, paramProperty 也有某種程度達到簡化的目的.

該方法在 weblogic 9.2 是測試通過的, 但是displaytag 從去年的六月就停止開發了, 若有相關的 bug, 可能需要自己動修改.
若您的頁面需求比較複雜, 也可以考慮別種solution來實作.

#後記:該問題又找到了一個解決方案,將 display:table 內的ID屬性,更新為UID即可.

displaytag - Implicit objects created by table
http://displaytag.sourceforge.net/11/tut_implicitobjects.html
eXtremeComponents
http://code.google.com/p/extremetable/
jmesa
http://code.google.com/p/jmesa/

0 意見: