preOpenForm事件

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

preOpenForm事件

1 事件介绍

此事件触发时,新界面还没有显示出来,可以在此事件,取消界面的显示,或者修改显示参数。


2 事件触发时机

系统收到showForm指令,显示界面前,准备构建界面显示参数时,触发此事件。


3 代码模板

package kd.bos.plugin.sample.dynamicform.pcform.form.template;
 
import kd.bos.form.events.PreOpenFormEventArgs;
import kd.bos.form.plugin.AbstractFormPlugin;
 
public class PreOpenForm extends AbstractFormPlugin {
 
    @Override
    public void preOpenForm(PreOpenFormEventArgs e) {
         super.preOpenForm(e);
         // TODO : 可以在此取消界面显示
    }
}


4 参数说明

PreOpenFosrmEventArgs e:事件参数对象,定义如下:

  • Object getSource():界面显示参数FormShowParameter对象,可以通过调整此对象属性值,控制界面显示;

  • void setCancel(boolean cancel) :取消界面显示;

  • void setCancelMessage(String cancelMessage):cancelMessage 取消原因,提示用户。

 

5 应用示例

5.1 案例说明

  1. 自定义界面标题

  2. 自行校验界面查看权,如果未授权,不允许显示

 

5.2  实现方案

  1.  捕获界面显示 preOpenForm事件

        a. 修改显示参数,调整界面标题

        b. 校验权限,如果无权,取消界面显示


  2. 上述场景仅用于演示,实际验权由系统自动处理,不需要插件验权。

 

5.3 运行效果

  • 显示效果,界面标题被修改;



 

  • 如果没有权限,则界面不会打开,直接提示无权。


  

5.4 实例代码

package kd.bos.plugin.sample.dynamicform.pcform.form.bizcase;
 
import kd.bos.context.RequestContext;
import kd.bos.form.FormShowParameter;
import kd.bos.form.events.PreOpenFormEventArgs;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.bos.servicehelp.permission.PermissionServiceHelper;
import kd.bos.servicehelper.model.PermissionStatus;
 
public class PreOpenFormSample extends AbstractFormPlugin {
 
    @Override
    public void preOpenForm(PreOpenFormEventArgs e) {
        
         // 设置显示参数 - 是否触发TimerElapsed事件
         FormShowParameter showParameter = (FormShowParameter)e.getSource();
         showParameter.setListentimerElapsed(true);
        
         // 设置显示参数 - 界面标题
         showParameter.setCaption("hello world");
        
         // 检查用户是否获得授权,如未授权,撤销界面显示
         if (!this.checkFunctionPermission(showParameter.getFormId(), PermissionStatus.View)){
             e.setCancel(true);
             e.setCancelMessage("对不起,您无权访问此页面!");
         }
    }
   
    private boolean checkFunctionPermission(String formId, String permissionItemId){
         long userId = Long.parseLong(RequestContext.get().getUserId());
         int result = PermissionServiceHelper.checkFunctionPermission(
                  userId,
                  RequestContext.get().getOrgId(),
                  formId,
                  permissionItemId);
        
         return result == 1;
    }
}

 

preOpenForm事件

1 事件介绍此事件触发时,新界面还没有显示出来,可以在此事件,取消界面的显示,或者修改显示参数。2 事件触发时机系统收到showForm指令...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息