# 功能描述
调用脚本功能实现的是,我们有些情况下希望在前端调用后端的代码,可以做一些后端的逻辑处理,如果我们每次都去编辑java代码,那么可能需要服务器重新发布,重启比较繁琐。
平台实现了可以通过在线编辑java代码,提供给前端调用,方便开发过程。
# 操作步骤
添加一个后台调用。
我们添加一个别名,别名是唯一的 编写java 脚本,return "hello" + params;其中 params 是前端传过来的参数,如果有多个参数,自行组装,在后端自行解析。
测试 我们可以看到返回的结果。
可以查看使用帮助
# 通过脚本调用构建下拉树
# 业务场景
在表单中,我们有时候需要通过下拉框选择用户,这个用户需要和组织架构挂钩。
类似这种。
这种通过通过直接配置还是不能够配置出来,比如自定义SQL,平台提供了一种可以树形配置URL的功能实现树形。
这个时候就可以通过调用脚本,在线实现 这个功能。
# 添加一个调用脚本
import com.redxun.core.dao.mybatis.CommonDao;
import com.redxun.core.util.AppBeanUtil;
CommonDao dao=AppBeanUtil.getBean(CommonDao.class);
String pid=params["ID_"];
if(pid==null){
pid="0";
}
String sql="select GROUP_ID_ ID_,NAME_,(SELECT COUNT(*) FROM os_group A WHERE A.PARENT_ID_=W.GROUP_ID_) CHILDS,1 TYPE,PARENT_ID_ from os_group w WHERE DIM_ID_='1' AND PARENT_ID_='"+pid+"'";
List list=dao.query(sql);
List userList=new ArrayList();
//"isLeaf":false,"expanded":false
for(Map map:list){
String groupId=map["ID_"];
String userSql="select u.USER_ID_ ID_,u.FULLNAME_ NAME_ ,2 TYPE,'"+groupId+"' PARENT_ID_ from os_rel_inst t,os_user u where t.PARTY1_='"+groupId+"' and REL_TYPE_ID_='1' and PARTY2_=u.USER_ID_";
List users=dao.query(userSql);
for(Map user:users){
user.put("isLeaf",true);
user.put("expanded",false);
}
userList.addAll(users);
if(map["CHILDS"]>0){
map.put("isLeaf",false);
map.put("expanded",false);
}
else{
map.put("isLeaf",true);
map.put("expanded",true);
}
}
list.addAll(userList);
return list;
脚本编写如上
params 是上下文封装的参数map对象。
树形实现异步,数据中需要 isLeaf 和 expanded 数据,如果为false,表示有子节点数据。
# 表单中配置
配置一个下拉框 ,这个URL 的配置就 配置 为
/sys/core/sysInvokeScript/data/脚本别名.do
还需要配置 文本字段,ID_字段,父节点字段,就可以实现树形异步了。