UAP扩展开发 - 新增按钮

原创 2017年09月22日 18:18:31

UAP新增按钮的实现

一、扩展说明

1.按钮扩展的实现有两种方法

- 按钮继承:NCAction,MenuAction

- 拦截器实现:ActionInterceptor

此处是通过按钮继承实现的

2.UAP扩展开发新增按钮一般就三步

- 功能注册找到对应的节点查看全局配置xml文件

- 新建action类,扩展xml文件

- 注册配置文件到功能注册节点下


此处以销售订单维护为例,效果如下



3.节点查找路径

- 功能注册节点

:动态建模平台 -> 开发配置 -> 功能管理 -> 功能注册 

- 销售订单维护节点

:供应链 -> 销售管理 -> 销售订单 -> 销售订单维护

二、按钮实现

第一步 - 功能节点查看

1.新建UAP项目

新建销售po模块的UAP项目,新建组件命名自定义;

选中项目右键启动中间件服务;

本次扩展添加的按钮是销售订单维护节点下的。

进入功能注册找到采购订单维护节点



看到'B'部分参数注册内层红框就是当前节点的xml配置文件,这个后面要用到;

第二步 - 按钮类及配置文件实现

1.创建action类及xml扩展文件

在新建的项目中client下新建action类及xml配置文件;

命名最好规范化可以参考标准产品相似功能节点的命名

结构如下:


action类就是按钮对应的java类,该类继承NCAction,覆盖doAction()方法,按钮的响应后的逻辑操作可在此方法中编写;

xml文件就是扩展按钮的配置文件。

2.文件代码

AddTestAction.java

package nc.ui.extend.pubapp.action;

import java.awt.event.ActionEvent;

import nc.ui.pub.beans.MessageDialog;
import nc.ui.uif2.NCAction;
import nc.ui.uif2.UIState;
import nc.ui.uif2.editor.BillForm;
import nc.ui.uif2.model.AbstractAppModel;

public class AddTestAction extends NCAction { 
	 
	public AddTestAction() {
		super.setBtnName("按钮");
		super.setCode("code");
	}
	 
	private static final long serialVersionUID = -4417976703049420324L; 
	private BillForm editor; 
	private AbstractAppModel model; 

 
	@Override public void doAction(ActionEvent e) throws Exception {
		MessageDialog.showHintDlg(editor, " 提示 ", " 测试自己新按钮按下 ");
	}
	public BillForm getEditor() {
		return this.editor; 
	}
	public AbstractAppModel getModel() {
		return this.model; 
	}
	public void setEditor(BillForm editor) {
		this.editor = editor; 
	}
	public void setModel(AbstractAppModel model) {
		this.model = model;
		model.addAppEventListener(this);
	}
	@Override
	protected boolean isActionEnable() {
		return this.model.getUiState() == UIState.NOT_EDIT;
	}
} 

pubapp_ext_config.xml

<?xml version="1.0" encoding="GBK"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	<!--  插入按钮 -->
	<bean class="nc.ui.pubapp.plugin.action.InsertActionInfo"> 
		<property name="action" ref ="AddTestAction" />
		
		<!-- 这是插入按钮的目标位置配置   addMenuGroup即为查找的目标按钮  在其后插入测试按钮-->
		<property name="target" ref="addMenuGroup" />
		<property name="pos" value="before" />
		<property name="actionContainer" ref="actionsOfList" /><!-- 卡片,列表 -->
		<property name="actionType" value="notedit" /><!-- notedit 或 edit -->
	</bean>
	
	<bean class="nc.ui.pubapp.plugin.action.InsertActionInfo">
		<property name="action" ref ="AddTestAction" />
		<property name="target" ref="addMenuGroup" /><!-- 目标按钮 -->
		<property name="pos" value="before" /><!-- 位置 -->
		<property name="actionContainer" ref="actionsOfCard" /><!-- 卡片,列表 -->
		<property name="actionType" value="notedit" /><!-- notedit 或 edit -->
	</bean>
	
	<bean id="AddTestAction" class="nc.ui.extend.pubapp.action.AddTestAction">
		<property name="model" ref="manageAppModel" />
		<property name="editor" ref="billFormEditor" />
		
	</bean>
 </beans>

3.xml配置中的参数说明

<bean class="nc.ui.pubapp.plugin.action.InsertActionInfo"> 标识了扩展新增按钮
< bean class="nc.ui.pubapp.plugin.action.ReplaceActionInfo">替换按钮配置
<bean class=" nc.ui.uif2.uiextend.ActionExtInfo">删除按钮配置
<property name="target" ref="addMenuGroup" /> 
<property name="pos" value="before" />新增按钮AddTestAction在按钮addMenuGroup的前面
<bean id="AddTestAction" class="nc.ui.extend.pubapp.action.AddTestAction">
<property name="model" ref="manageAppModel" />
<property name="editor" ref="billFormEditor" />
</bean>
id就是作为一个按钮在xml配置文件中的标识,
class是按钮对应的的Java类
model是销售订单维护节点的xml配置文件中注册的AppModel
editor也是在该节点的xml配置文件中;

以上model,editor,目标按钮都是在xml配置中找;这个xml就是上面功能节点销售订单维护下的参数注册中的saleorder_config.xml配置文件;

找源码有个快捷键Ctrl+Shift+T,会弹出输入框,输入查找的文件名点击确认即可;


打开文件后,可以找到actions,选一个作为目标按钮即可;


关于model可以去查或者按照已有的action跟它配置的model,editor保持一致即可;



第三步 - 配置文件注册

1.注册配置文件到功能节点

就是把xml的全路径配置到销售订单维护节点下的参数注册中;

注意参数的命名有一定的规范,一般PluginBeanConfigFilePath加下划线后跟01,02这样;



到此完成新增按钮;到供应链的销售订单维护打开,此时按钮已被添加成功。


另:如果是二级按钮,或者按钮组;注意选择目标按钮后,将<property name="actionType" value="notedit" />中的notedit换成edit即可。

用友uap开发nc65主子表修改按钮不能跳转到修改状态

用友uap开发nc65主子表修改按钮不能跳转到修改状态 如图所示:点击修改按钮界面不能跳转到修改界面。 此时的修改按钮xml代码如下 修改如下: ...

nc65用友uap开发节点通过按钮调用打开另外一个节点并传数据跳编辑态(推单)

nc65用友uap开发打开另外一个节点并传数据(推单) 1.按钮代码: package nc.ui.fdc_pr.h303113510.actions; import java.awt.event....

用友uap开发nc65按钮配置

用友uap开发nc65按钮配置 1.在xml文件中配置按钮 ...

UAP拓展按钮自定义功能方法步骤

UAP拓展按钮自定义功能方法是基于系统功能注册的,要完成功能自定义方法,要先配置在功能注册那里配置好相应的配置路径,根据配置路径编写相应的配置文件和类,一般要继承原生的处理类,然后通过复写的方法覆盖掉...

uap开发之 创建场景代码

创建了UAP和UAP模块项目,接下来就要创建场景代码了。每一个场景代码都可以通过URL地址访问具体形式为 http:// 服务端地址:端口号/UAP项目名称/UAP模块名称/场景名称/index.js...

nc65用友uap开发列表多选和boolean类型的单选框在浏览态可以选择

nc65用友uap开发列表多选和boolean类型的单选框在浏览态可以选择 1.对于列表中的左侧单选框显示并在浏览态可以选择 要达到以上效果  在xml配置文件里面做如下操作: 配置...

用友nc65 uap开发参照节点数据拉单之二----直接通过调用查询模版查询上游单据

用友nc65 uap开发参照节点数据拉单之二----直接通过调用查询模版查询上游单据 前面一篇博客讲了利用查询模版并显示在弹窗面板上的拉单方法。此次是直接通过调用查询模版查询上游所有单据。如图所示: ...

NC65开发使用UAP-STUDIO6.5发布WebService

之前做过NC633发布webservice,今天使用UAP-STUDIO6.5发布发现有所不同。 主要有下面几个步骤: 1、由于UAP-STUDIO6.5不带WebService发布工具,所以第一...

用友 uap nc65开发中的查询模版源代码讲解

用友 uap  nc65开发中的查询模版源代码讲解 1.目标:如图所示,针对查询模版中出现的问题(如查不出数据),为什么呢?其实归根结底他是到数据库里面去查询的,这个时候我们就需要找到其sql语句来...

用友nc65 uap开发如何将一个vo单据显示在一个弹窗面板上?

用友nc65   uap开发如何将一个vo单据显示在一个弹窗面板上? 在有的时候我们需要通过一个节点查看另外一个节点与之相关的信息,而如果需要再去打开另外一个节点这样会使得操作繁杂。此时我们利用他们之...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UAP扩展开发 - 新增按钮
举报原因:
原因补充:

(最多只允许输入30个字)