String outputLabel = ParameterAccessor.htmlEncode(( label == null)?IBirtConstants.NULL_VALUE_DISPLAY:label);
于是修改<%= outputLabel %>中outputLabel为
outputLabel.equals(ParameterAccessor.htmlEncode(IBirtConstants.NULL_VALUE_DISPLAY)) ? "所有的" : outputLabel
这样Null Value就变成了自定义的文字显示,不过这样所有的参数就只能是相同的,不灵活,而且在级联参数列表中,还会出现Null Value这样的字样.
最好的解决办法,分析:BIRT既然是自动加上这样的值,就找找它是依据什么规则去添加的,找到这个规则就OK了.参数列表中总要有一个Null值,那我们就直接把这个Null值定义好,并把展现的数据自定义好.说到这可能不太容易理解,看以下截图:Value是传递给报表使用的;
Display Text是展现给用户看的; 这两个都是通过一个Data Set 传递的 只要我们在对应的Data Set中添加上一个Value为Null的id值,再把想要呈现的文字赋予给name即可. 主要实现:修改SQL,在原来的SQL基础上,再UNION一个从伪表中查出的一组数据,即值为null的id,自定义文本的name:([原来的sql]) UNION (SELECT NULL AS id, '所有的' as name FROM DUAL)
当然前后SQL查询的字段数量要一致.
这样再次预览报表时Null Value就不见了,展示的而是在伪表查询语句中我们自定义的文本
在此记录一下,也方便自己以后使用,希望能帮到需要的朋友.
另外:
一般我们希望我们自定义的文本展现的列表中的第一个位置,这个通过参数的排序就搞定了,只要按照要传递给报表的字段排序即可,如上例,按id排序,其为null,自然就排在第一位了.