displaytag タグ ライブラリによって JSP で生成された HTML テーブルがあります。表に表示されるゼロを抑制したいと考えています。つまり、空白のセルに置き換える必要があります。これを達成する簡単な方法はありますか?
3 に答える
これは、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" />
org.displaytag.decorator.TableDecorator インスタンスを作成し、テーブルに配置します。display:table タグの decorator 属性を使用して、完全修飾されたデコレーター クラス名をテーブルに配置します (1 つをインスタンス化して配置できると思いますが、このクラスのインスタンス化は簡単です...引数なしのコンストラクターがあることを確認してください)。これが正しく機能するためです)。
メソッド initRow(...) または startRow() は、テーブル オブジェクトを調べて、見つかったゼロを null (または、null を表示する場合は空白) に設定する場所です。initRow をお勧めしますが、最初に super.initRow() を使用して、現在の行オブジェクトに簡単にアクセスできるようにしてください。これをお勧めする理由は、startRow が文字列を返さなければならない (デフォルトでは null 文字列が返される) ためです。これは必要ないと思います。
私の知る限り、これを処理する「簡単な」方法はありません。データ関連の構成プロパティは、nullを表示するかどうかだけです。
データがdisplaytagタグに到達する前に、これを処理することをお勧めします。おそらく、データまたはビューヘルパークラスを提供するサーブレットにあります。