我有一个HTML表,它由displaytag标签库在JSP中生成。我想抑制表中出现的任何零,即它们应该被空白单元格替换。有没有直接的方法来实现这个目标?
答案 0 :(得分: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" />
答案 1 :(得分:1)
创建一个org.displaytag.decorator.TableDecorator实例,并将其放入表中。使用display:table标签的decorator属性将完全限定的装饰器类名放入表中(我相信你可以实例化一个然后放入它,但是这个类的实例化是微不足道的...确保你有一个无参数的构造函数为了正常工作)。
方法initRow(...)或startRow()是您遍历表对象的地方,将您找到的任何零设置为null(或者,如果显示空值,则为空格)。我建议使用initRow,但请确保首先使用super.initRow()来轻松访问当前行对象。我推荐这个的原因是startRow必须返回一个String(默认返回一个空字符串),我认为你不需要这样做。
答案 2 :(得分:-2)
据我所知,没有一种“直截了当”的方式来处理这个问题。唯一与数据相关的配置属性是否显示空值。
在数据到达displaytag标记之前,最好先处理它。也许在提供数据的servlet或视图助手类中。