背景:s-HR Cloud基于已有视图进行二开扩展添加一个按钮demo
视图举例:com.kingdee.shr.batchAffair.empBatchHire.dynamicList
一、视图配置
如下图,基于标准视图的扩展,增加一个demo按钮,视图配置调整4步
1、进行handler扩展,将标准handler进行注释,新增配置<handler class="com.kingdee.shr.batchAffair.web.handler.EmpBatchMaintainHireListHandlerExt" />
2、对js进行扩展,标准js保留,新增配置<script src="${appPath}/customer/web/js/shr/batchAffair/empBatchHireListExt.js" />
3、对js类进行扩展,标准js类注释,新增配置<jsClass name="shr.batchAffair.EmpBatchHireListExt" />
4、新增按钮配置,<button name="demo" caption="演示按钮" />
二、扩展js,注意js的类名,继承等
/** * 员工转正列表扩展 */ shr.defineClass("shr.batchAffair.EmpBatchHireListExt", shr.batchAffair.EmpBatchHireList, { initalizeDOM: function() { shr.batchAffair.EmpBatchHireListExt.superClass.initalizeDOM.call(this); }, demoAction:function(){ var _self = this; //组装参数,根据需求组装 var data ={}; _self.doRemoteAction({ method: 'demo',//请求handler的方法,注意,这里的method值,能带Action,只能是demo,对应后端就是请求demoAction方法 param:data }); }, });
三、扩展handler,注意继承体系
package com.kingdee.shr.batchAffair.web.handler; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.ui.ModelMap; import com.kingdee.shr.base.syssetting.exception.SHRWebException; public class EmpBatchMaintainHireListHandlerExt extends EmpBatchMaintainHireListHandler { public String demoAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException { //add your logic here return null; } }
四、部署
注意,s-HR的web端工程代码,和服务端代码部署需要区分开来,在开发时候,服务端的模块工程和web端模块工程需要分开,方便jar包制作和开发编码
如上面的Eclipse工程截图中,s-HR的web工程为:customer,字符集UTF-8;服务端工程为shr_custom,字符集GBK
s-HR web端工程,java的编码需要以UTF-8编码进行开发, java代码构建输出生成的jar包放入如下目录{安装目录}\eas\server\lib\addon\customer\lib\customer.jar,如图
js代码放到{安装目录}\eas\server\deploy\easweb.ear\shr_web.war\addon\customer\web\js下,如图
如果包含服务端代码(带有元数据的工程)需要部署,服务端代码工程需要以GBK编码进行开发
java的jar包放到{安装目录}/eas/server/lib/sp下
元数据的jar包放到{安装目录}/eas/server/metas/sp下
五、如果是直接二开的页面扩展,在原基础上修改扩展,不需要对js和handler进行新建扩展,视图只需要新增按钮配置,<button name="demo" caption="演示按钮" />
在原js中增加方法demoAction,方法内容可以参考上面
在原handler中增加方法demoAction,方法内容可以参考上面
六、调试
前端js调试,如果在url中没参数debug=true,系统的js文件是压缩模式,无法调试,需要在url中增加此参数进行调试
通过调试模式,看到js源代码,可以参考标准功能js来调整二开的js
后端调试入口com.kingdee.shr.base.syssetting.web.dynamic.controller.DynamicController.executeAction(HttpServletRequest, HttpServletResponse, ModelMap)
http://ip:port/shr/ces.jsp工具可以查看系统信息,补丁信息,类加载信息,下载apusic日志等
推荐阅读