实用例子
实用例子
首先定义一个参数处理类,在处理类中,根据用户输入的参数,到数据库中查询,判断当前填报记录属于哪种情况,然后控制页面的跳转,参数处理类的例子代码如下:
package test;import java.sql.*;import com.runqian.report4.usermodel.input.*;public class MyParamProcessor extends AbstractParamProcessor {public void process() throws Exception {boolean canEdit = false;Connection con = null;Statement stmt = null;try {// 获取缺省数据库连接con = context.getConnectionFactory(context.getDefDataSourceName()).getConnection();String empID = getParamValue("empID");//取得参数值stmt = con.createStatement();ResultSet rs = stmt.executeQuery("SELECT * from 雇员 where 雇员ID='"+empID+"'");if(rs.next()){//判断本用户是否已经接受审核String isMODITY = rs.getString("ISMODITY");if(!"1".equals( isMODITY ))canEdit = true;}} finally {try {if(stmt != null)stmt.close();if (con != null)con.close();} catch (Exception e) {}}if (!canEdit) {throw new Exception("该填报表已经接受审核,不可修改!");}}}
编译过的参数处理类需要放在web应用的类路径下,这里为: …\reportHome\webapps\demo\WEB-INF\classes如何知道在参数模板提交时来调用这个参数预处理类呢?实际上这个是在jsp里定义的,如下,7.4.jsp在参数模板发布tag标签里指定了参数预处理类,如下:
<%@ page contentType="text/html;charset=GBK" %><%@ taglib uri="/WEB-INF/runqianReport4.tld" prefix="report" %><report:param name="form1" paramFileName="/填报专题/7.1_arg.raq" processor ="test.MyParamProcessor"/><report:html name="report1" reportFileName="/填报专题/7.1.raq"needSaveAsWord="yes"needSaveAsPdf="yes"needSaveAsExcel="yes"/>