9.12 自定义更新类
定义了自定义更新类,则在数据修改完毕点击填报按钮时,后台通过调用用户自定义的更新类来操作数据,报表内置的数据集更新方式则不起作用,在数据提交前会调用更新辅助类中beforeSave方法,在提交后会调用更新辅助类中afterSave方法。
接口扩展方式
这是为用户扩展UniEAP Report提供的功能,如果选择<自定义类提交>方式,将不需要定义逻辑主格,自定义提交类需要实现com.neusoft.report.engine.datainput.CustomDataInput接口,该接口定义如下:
package com.neusoft.report.engine.datainput;
import com.neusoft.report.engine.Report;
public interface CustomDataInput {
public static final int UPDATA_RECORD_UNKNOW = -1;
public int update(Report report);
}
仅需要实现update方法,在该方法中实现自定义的数据更新逻辑;输入参数Report为报表对象,返回值为数据更新的记录数,如果更新记录数未知,则返回UPDATA_RECORD_UNKNOW。
更新辅助类
更新辅助类是一个监听类,该类中可以使用session对象、request对象、response对象、报表运行对象、获得前端提交的数据、修改前端提交的数据,可以检查用户登录信息、操作权限、数据有效性或其他信息。该功能是UniEAP Report提供的一个扩展接口,定义更新辅助类需要实现com.neusoft.report.engine.datainput. DataInputListener接口。该接口定义如下:package com.neusoft.report.engine.datainput; import java.util.Map; public interface DataInputListener { public void beforeSave(Map dataInputContext); public void afterSave(Map dataInputContext); }
beforeSave(Map dataInputContext)在报表数据更新之前执行,afterSave(Map dataInputContext)在报表数据更新之后执行。
输入参数Map dataInputContext中可以得到5个对象。分别使用如下常量获得: com.neusoft.report.engine.datainput.DataInputer接口
- DataInputer.CONTEXT_HTTP_REQUEST
获取httpRequest对象的常量 - DataInputer.CONTEXT_HTTP_RESPONSE
获取httpResponse对象的常量 - DataInputer.CONTEXT_REPORT
获取Report对象的常量 - DataInputer.CONTEXT_UID
获取当前用户ID的常量 - DataInputer.CONTEXT_RID
获取当前报表定义ID的常量
更新辅助类的demo实现如下:
package com.neusoft.report.sample.datainput; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.neusoft.report.engine.Report; import com.neusoft.report.engine.datainput.DataInputListener; import com.neusoft.report.engine.datainput.DataInputer; public class MyInputListener implements DataInputListener { public void afterSave(Map dataInputContext) { HttpServletRequest request = (HttpServletRequest) dataInputContext.get(DataInputer.CONTEXT_HTTP_REQUEST); HttpServletResponse response = (HttpServletResponse) dataInputContext.get(DataInputer.CONTEXT_HTTP_RESPONSE); Report report = (Report)dataInputContext.get(DataInputer.CONTEXT_REPORT); String rid = (String)dataInputContext.get(DataInputer.CONTEXT_RID); String uid = (String) dataInputContext.get(DataInputer.CONTEXT_UID); ……
使用方式
在填报提交中插入自定义提交,并绑定自定义提交类和更新辅助类。
写入更新辅助类的全路径
写入自定义提交类的全路径
- DataInputer.CONTEXT_HTTP_REQUEST