场景示例- 参数监听类-报表展现标签与API
目录

场景示例

示例1:获取系统数据库连接

在参数监听类里,需要对参数进行业务处理,例如保存参数值或者读取之前保存的参数值,如果参数值存在数据库中,此时需要访问数据库,因此需要调用API接口获得系统数据库连接。

//获得系统默认数据源的连接对象,其中context为监听类固有的变量

Connection con=context.getConnectionFactory(context.getDefDataSourceName()).getConnection();

String dataSource=……; //指定数据源名称

Connection con=context.getConnectionFactory(dataSource).getConnection(); //获得指定数据源的连接对象

示例2:获得/修改/追加传入的参数

参数监听类里,可以获得前端传入的参数值并保存,也可以把保存的参数值取出来添加到当前参数池中,因此,需要调用API接口获取参数、追加、修改参数。

参数监听类里有一个固有变量params,存放了前端提交的所有参数:private Hashtable params;

通过该变量可以获取所有参数的名称和参数值。

Enumeration paramNames=params.keys();

//获得参数名集合

while(paramNames.hasMoreElements()){

Object o=paramNames.nextElement();

if(o==null) continue;

String paramValue=getParamValue((String)o);

 //获得参数值

……

 //主体代码,例如保存参数值等

}

putParam("arg1","value");

//追加或者修改参数值

示例3:获取session信息

参数监听类里,有可能需要到用户的session里把用户身份有关的信息读出来,作为参数追加到当前的参数池中,从而在报表中实现用户权限的控制。

Object o=session.getValue("userId");

 //session是参数监听类的固有变量,可以直接引用

if(o!=null){

putParam("userId",(String)o);

}

示例4

添加参数newParam,获取参数empID的值如果值为1,后台打印该填报表已经接受审核,不可查询,并且报出异常不允许查询:

public class ParamProcessorDemo extends AbstractParamProcessor

{

  public void process()

    throws Exception

  {

    boolean canEdit = true;

    Connection con = null;

    Statement stmt = null;

    try

    {

      putParam("newParam", "abc");

 

      String empID = getParamValue("empID");

      if (empID.equals("1"))

        canEdit = false;

    }

    catch (Exception e) {

      e.printStackTrace();

      try

      {

        if (stmt != null)

          stmt.close();

        if (con != null)

          con.close();

      }

      catch (Exception localException1)

      {

      }

    }

    finally

    {

      try

      {

        if (stmt != null)

          stmt.close();

        if (con != null)

          con.close();

      } catch (Exception localException2) {

      }

    }

    if (!canEdit)

    {

      System.out.println("该填报表已经接受审核,不可查询!");

      throw new Exception("该填报表已经接受审核,不可查询!");

    }

  }

}