场景示例
示例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("该填报表已经接受审核,不可查询!");
}
}
}