NC65按钮设置拦截器

需求:在业务上 有些代码的校验 需要在按钮事件执行前 或者是按钮正常执行后 去执行

           这个时候 就需要添加拦截器(ActionInterceptor)

          不过另外思路就是重载按钮类 doAction里面重写  比如说 自定义删除类 

          跟平时的自定义按钮类似 只是继承的父类不同  参考链接:https://mp.csdn.net/postedit/82658874

实现方式如下:

         举例:修改拦截器

         客户需求:点击修改时 如果说当前单据自定义项16已存在值 那么提示 不能修改

                             否则 正常处理

1、新建一个类 EditOADjtbInterceptor.java 继承 ActionInterceptor

2、继续父类方法说明:

      a) afterDoActionFailed  方法意思:按钮执行失败后执行

      b) afterDoActionSuccessed 方法意思:按钮执行成功后执行

      c) beforeDoAction 方法意思:按钮执行前执行 (符合客户需求)

3、代码案例: 

package nc.ui.fdgyl.oafypz.action;
 
import java.awt.event.ActionEvent;
 
import javax.swing.Action;
 
import nc.bs.framework.common.NCLocator;
import nc.itf.fdgyl.IFdDBService;
import nc.ui.pub.beans.MessageDialog;
import nc.ui.pubapp.uif2app.query2.model.IModelDataManager;
import nc.ui.pubapp.uif2app.view.ShowUpableBillForm;
import nc.ui.uif2.actions.ActionInterceptor;
import nc.ui.uif2.model.AbstractAppModel;
 
/**
 * 修改方法拦截器
 * @author yjw
 * 
 */
 
public class EditOADjtbInterceptor implements ActionInterceptor {
    private AbstractAppModel model;
    private ShowUpableBillForm editor;
    private IModelDataManager dataManager;
 
    @Override
    public boolean afterDoActionFailed(Action arg0, ActionEvent arg1,
            Throwable arg2) {
        return false;
    }
 
    @Override
    public void afterDoActionSuccessed(Action arg0, ActionEvent arg1)
    {
    }
 
    public IModelDataManager getDataManager() {
        return this.dataManager;
    }
 
    public void setDataManager(IModelDataManager dataManager) {
        this.dataManager = dataManager;
    } 
    
    @Override
    public boolean beforeDoAction(Action arg0, ActionEvent arg1) {
        
        String nc_pzdate = getEditor().getBillCardPanel().getHeadItem("vdef16").getValue();
        if(nc_pzdate!=null&&nc_pzdate.length()>0)
        {
            MessageDialog.showWarningDlg(getEditor(), "提示", "当前单据已生成凭证,不能修改!\n请重新选择!");
            return false;
        }
        String nc_pzh = getEditor().getBillCardPanel().getHeadItem("nc_pzh").getValue();
        if(nc_pzh!=null&&nc_pzh.length()>0)
        {
            MessageDialog.showWarningDlg(getEditor(), "提示", "当前单据已生成凭证,不能修改!\n请重新选择!");
            return false;
        }
        String nc_jsdate = getEditor().getBillCardPanel().getHeadItem("vdef13").getValue();
        if(nc_jsdate!=null&&nc_jsdate.length()>0)
        {
            MessageDialog.showWarningDlg(getEditor(), "提示", "当前单据已生成付款结算单,不能修改!\n请重新选择!");
            return false;
        }
        return true;
    }
 
    public ShowUpableBillForm getEditor() {
        return editor;
    }
 
    public void setEditor(ShowUpableBillForm editor) {
        this.editor = editor;
    }
 
    public AbstractAppModel getModel() {
        return model;
    }
 
    public void setModel(AbstractAppModel model) {
        this.model = model;
    }
}

4、配置文件添加 即把拦截器添加到按钮下<!--======= 动作:[newActions] [修改] ===========-->
<bean id="editAction" class="nc.ui.pubapp.uif2app.actions.EditAction">
    <property name="model"><ref bean="bmModel"/></property>
    <property name="interceptor">
        <bean class="nc.ui.pubapp.uif2app.actions.interceptor.CompositeActionInterceptor">
            <property name="interceptors">
                <list>
                    <bean              class="nc.ui.pubapp.uif2app.actions.interceptor.ShowUpComponentInterceptor">
                        <property name="showUpComponent" ref="billForm" />
                    </bean>
                    <!--此处可以扩展添加自己的拦截器-->
                    <!--此处可以扩展添加自己的拦截器-->
                    <bean class="nc.ui.fdgyl.oafypz.action.EditOADjtbInterceptor">
                        <property name="model"><ref bean="bmModel"/></property>
                        <property name="editor"><ref bean="billForm"/></property>
                        <property name="dataManager"><ref bean="bmModelModelDataManager"/></property>
                    </bean>
                </list>
            </property>
        </bean>
    </property>
    <property name="exceptionHandler"><ref bean="exceptionHandler" /></property>
</bean>

注:此部分 有2个拦截器:第一 为修改跳编辑态拦截器 (系统)  第二  是开发拦截器 

5、清理缓存 测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值