4.2 系统变量扩展

系统变量的定义

实现com.neusoft.report.engine.formula.variable.Variant接口并修改report-system-variable.xml文件。

Variant接口定义

package com.neusoft.report.engine.formula.variable;
import java.util.Map;
import com.neusoft.report.engine.util.DataValue;
public interface Variant {
        public static final String CONTEXT_UID = "UID";
        public static final String CONTEXT_RID = "RID";
      public static final String CONTEXT_HTTP_REQUEST = "HTTP_REQUEST";
        public DataValue getValue(Map context);
}
  • 接口说明:

    • 参数context
      传入的上下文参数,包括当前用户id、报表模板id,数据类型为字符串(String)。
    • 返回值
      如果是简单类型的数据值,返回AbstractDataValue派生出来的几个DataValue的类型;如果是集合类型,返回CollectionDataValue类型。
    • 常量
      CONTEXT_UID:当前用户id。
      CONTEXT_RID:报表模板id。
      CONTEXT_HTTP_REQUEST:javax.servlet.http.HttpServletRequest对象。

    例子:一个Variant接口实现的例子,获取报表的id。

import java.util.Map;
import com.neusoft.report.engine.util.DataValue;
import com.neusoft.report.engine.util.datavalue.StringDataValue;

public class RID implements Variant {
    public DataValue getValue(Map context) {
        Object rid = context.get(Variant.CONTEXT_UID);
        return new StringDataValue((String)rid);
    }
}

report-system-variable.xml文件

</system_variable>
<variable>
<name>currentTime</name>
      <caption>服务器时间</caption>  <className>com.neusoft.report.engine.formula.variable.CurrentTime</className>
      <dataType>5</dataType>
</variable>
<variable>
      <name>UID</name>
      <caption>用户id</caption>
 <className>com.neusoft.report.engine.formula.variable.UID</className>
      <dataType>1</dataType>
</variable>
<variable>
      <name>RID</name>
      <caption>报表模板id</caption>
<className>com.neusoft.report.engine.formula.variable.RID</className>
      <dataType>1</dataType>
</variable>
</system_variable>
  • 增加一个变量,只需要在system_variable元素下增加一个variable元素

    • Variable下节点说明
      • Name
        表示这个系统变量名称,即引用该系统变量的名称,用英文字母表示;
      • Caption
        表示这个系统变量的描述信息,可以是中文;
      • className
        表示变量接口的实现类;
      • dataType
        表示返回值的数据类型,编码参见JAVADOC参考文档;

    文件中name为currentTime、UID、RID为报表默认提供的系统变量。

results matching ""

    No results matching ""

    results matching ""

      No results matching ""