2008-11-25 68 views
2

我有一個由tabletag標記庫在JSP中生成的HTML表格。我想壓制出現在表格中的任何零,即它們應該被空白單元替換。有沒有簡單的方法來實現這一目標?displaytag:在HTML表格中抑制零點

回答

-2

據我所知,沒有一種「簡單」的方式來處理這個問題。唯一與數據相關的配置屬性是是否顯示空值。

在數據進入displaytag標籤之前,最好先處理它。也許在提供數據的servlet或視圖助手類中。

1

創建一個org.displaytag.decorator.TableDecorator實例,並將其放入表中。使用display:table標記的decorator屬性將你的完全限定的裝飾器類名稱放入表格中(我相信你可以實例化一個然後放入它,但是這個類實例化是微不足道的...確保你有一個無參數構造函數爲此正常工作)。

方法initRow(...)或startRow()是您要通過表對象的位置,將您找到的所有零設置爲null(或者,如果顯示空值,則爲空格)。我建議使用initRow,但要確保先使用super.initRow()輕鬆訪問當前行對象。我推薦這個的原因是startRow必須返回一個String(默認返回一個空字符串),我認爲你不需要這樣做。

+0

的initRow()方法you`ve建議我重寫聲明最終 – 2008-11-26 03:54:27

2

我發現這可以使用ColumnDecorator的自定義實現來實現。

public class SuppressZeroDecorator implements DisplaytagColumnDecorator { 

    /* (non-Javadoc) 
    * @see org.displaytag.decorator.DisplaytagColumnDecorator#decorate(java.lang.Object, javax.servlet.jsp.PageContext, org.displaytag.properties.MediaTypeEnum) 
    */ 
    public Object decorate(Object rowObject, PageContext pageContext, MediaTypeEnum mediaType) { 

     if (rowObject != null && rowObject.toString().trim().equals("0")) { 
      return null; 
     } 

     return rowObject; 
    } 
} 

的裝飾應聲明在JSP每一列是這樣的:

<display:column property="age" title="Age" decorator="com.example.ZeroColumnDecorator" />