json格式字符串在java中 转成 JSONArray 处理

java处理 json格式字符串 首先转成 JSONArray 或 JSONObject 类型 如果json格式字符串 ,最外层 是 中括号,表示数组,就使用方法 JSONArray array = JSONArray.parseArray(text) 如果json格式字符串,最外层是 大括号,表示对象,就是用方法 JSONObject result = JSONArray.parseObject(text); 数组 和 对象可以相互嵌套 ,就相当于 JSONArray 和 JSONObject 可以相互嵌套, JSON对象的用法和java中 List Map 用法是一样的! [...]

如何控制同一用户PC和mobile中允许同时登录,但PC和mobile分别只能登录一次

平台默认提供的在线用户列表中没有记录用户登录的终端,因此要分别控制pc和mobile一个用户只能登录一次,需要自己记录用户登录的终端等信息 第一步:可以定义一个全局的map,在登录后把登录的用户名和终端作为key,登录产生的session做为value存储到map中 第二步:在登录前获取到当前登录的用户名和终端,判断map中是否有,如果有说明已经登录过了,可以抛出异常不让登录 第三步:当注销和session超时应该删除map中的信息,可以监听session失效实现 定义全局的map和监听session失效,可以在BusinessServer下创建servlet和listener实现,具体实现如下: 在\runtime\BusinessServer\WEB-INF下创建src 在src下创建servlet:/com/justep/user/OnLineMap.java,注意有包名目录/com/justep/user package com.justep.user; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServlet; public class OnLineMap extends HttpServlet { //定义一个mapping存在登录者的相关信息 public static Map<String, Object> OnLineMaps = new HashMap<String, Object>(); } 创建listener:/com/justep/user/SessionListener.java,注意有包名目录/com/justep/user [...]

第三方组织机构数据如何导入到X5中

第三方的组织机构数据导入到X5中有如下两种方案 方案一:在x5中定义action,调用X5提供的API把数据插入到SA_OPOrg和SA_OPPerson中(推荐此方案) action对应的java中可以调用下面的API进行组织和人员的添加 com.justep.system.opm.api.OrgHelper中提供了appendOrg 添加除人员成员外的各级组织节点和appendOrgs添加多个组织节点 com.justep.system.opm.api.PersonHelper中提供了appendPerson添加一个人员和appendPersons添加多个人员 函数的具体参数说明参考API中的讲解 第三方调用x5的action需要先模拟登陆 前端调用可以参考http://docs.wex5.com/bex5-ui-question-list-10271/中register.j的实现,然后通过ajax调用.j 后端调用可以用java接口或者封装为WebService可以参考/BIZ/demo/actions/process/integration下提供的案例 系统集成中也有说明 方案二:直接写sql向SA_OPOrg和SA_OPPerson中插入数据 通过sql向数据库中插入数据需要注意有些字段是必须给值的,可以参考组织机构初始化导入中的说明 注意SA_OPOrg中根节点的sParent的值要设置为null 导入成功后在/UI2/SA/OPM/repairTools/mainActivity.w中调用一下repairOrgAction这个action,然后配置一下这个功能的功能菜单和权限,运行功能,执行action的调用进行组织机构数据的修复 在添加人员(向SA_OPPerson中插入数据)是需要注意密码的格式 调用API插入人员时,直接传登录的时候输入的密码,java中OrgUtils.encryptPassword(String password)平台会自动对密码加密,把加密后的密码做参数给插入人员的API 使用sql插入数据时需要注意平台的密码是否用了加密增强的特性,可以根据/BIZ/system/config/sys.config.m中是否有下面的配置判断 <config name="passwordSalt" value="http://www.justep.com"/> 如果没有就是直接用的MD5加密的方式,可以自己对登录时输入的密码进行MD5加密插入到数据库中 如果有就是用了平台的密码加密增强特性,在MD5加密后还需要通过调用API:OrgUtils.saltPassword("MD5之后的值")生成的密码插入到数据库中

java获取人员信息的mail

java中平台提供的API可以直接获取人员的ID等,但是获取mail、phone这些信息时没有直接的API可以参考下面的方式实现 Collection<String> extPersonRelations = new ArrayList<String>(); extPersonRelations.add("sMail,"); com.justep.system.opm.api.Person person = com.justep.system.opm.api.PersonHelper.loadPerson(sID, extPersonRelations); String email = person.getExtValue("sMail").toString(); 其中的sID就是人员的ID的值

如何根据概念标识获取概念全路径和label

java中通过概念标识获取全路径参考: Model m = ModelUtils.getModel("/appdemo/test/data"); Concept c = m.getUseableConcept("AP_RQ"); String coptFullName = c.getFullName(); /appdemo/test/data是data数据模块全路径 AP_RQ是概念的标识 java中通过概念标识获取label参考: Concept c = (Concept)ModelUtils.getModelObjectByFullName("/appdemo/test/ontology/AP_RQ", Concept.TYPE); String label = c.getLabel(ContextHelper.getOperator().getLanguage()); /appdemo/test/ontology/AP_RQ是概念全路径(带模块路径的概念标识),AP_RQ就是概念

action返回如123.00这样的BigDecimal类型数据,js中获取小数会丢失

java中直接返回BigDecimal类型的数据,如果小数位都是0时,返回的数据小数会丢失,如下: public static BigDecimal simple() { BigDecimal i = new BigDecimal(12.00).setScale(2); return i; } 在js中接收到的数据会变成12,如果js中接收到的数据必须有小数,需要在java中把BigDecimal转换为String类型的,返回String类型,因此上面的代码需要修改为如下: public static String simple() { String i = new BigDecimal(12.00).setScale(2).toString(); return i; } 这样js中接收到的数据就是12.00

保存数据的时候报错“更新模式是WHERE_VERSION时, 必须有version”

平台的bizData的upateMode只支持两种: whereVersion和whereAll; whereVersion: update或delete时,使用只使用version作为条件; whereAll: update或delete时,使用所有列的旧数据(即查询出来的数据)作为条件; whereVersion:判断version字段是否被其他人改变,如果改变就保存失败 whereAll: 判断所有字段是否被其他人改变,如果有任何一个字段改变就保存失败 当使用whereVersion模式是bizData、概念和数据库中必须有version关系或字段 当保存报错“更新模式是WHERE_VERSION时, 必须有version”时按照下面的3项进行检查: 1.确认概念中是否有version关系,没有需要添加上,概念中有数据库的表中也需要添加 2.确认queryAction中是否选择了关系没有选择version 3.确认data的columns是否选择了关系没有选择version

系统集成时报错“ java.lang.ClassNotFoundException: com.justep.exception.BaseRuntimeException”

第三方集成BeX5时可能需要后端调用Action或者在后端登录,可能会报类似于如下的错误: Caused by: java.lang.ClassNotFoundException: com.justep.exception.BaseRuntimeException at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) ... 29 more 这个错误是在第三方的系统中确认平台需要的jar,需要把平台默认的下面两个jar也拷贝到第三方系统中,跟biz-client.jar放到一块 两个jar分别是: \runtime\UIServer\WEB-INF\lib\ui-common.jar \runtime\UIServer\WEB-INF\lib\message.jar

控制台报错“编码: JUSTEP191056; 提示: 解析Data(AA)定义失败,concept(BB), relation(XX)必须定义data-type”

在保存或刷新数据时控制报类似如下的错误: Caused by: com.justep.ui.system.SystemComponentException: 编码: JUSTEP191056; 提示: 解析Data(bizData1)定义失败,concept(AP_SZ), relation(fName)必须定义data-type at com.justep.ui.system.SystemComponentException.create(SystemComponentException.java:42) at BizData.createDataDef(BizData.java:35) at Data.execute(Data.java:40) 这个错误是关系没有找到关系类型导致的 找到并打开concept后面括号里的概念所在的ontology文件,找到这概念中的relation括号里的关系设置一下需要的关系类型 如果确认关系类型设置的问题,可以从下面相关的模块引用上排查问题 1.process文件同级的model.config.xml中要引用概念对应的data的模块和对应的action路径(use方式) 2.对应action文件同级的model.config.xml中要引用概念对应的data的模块(use方式) 3.概念对应的data模块下的model.config.xml中用引用概念所在的ontology模块(include方式)