起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7317|回复: 7

[处理中3] index.w如何调用action

[复制链接]

59

主题

150

帖子

446

积分

中级会员

Rank: 3Rank: 3

积分
446
QQ
发表于 2018-5-30 09:20:27 | 显示全部楼层 |阅读模式
版本: BeX5V3.5 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
BeX5_V3.7\model\UI2\portal\pc3这个目录下index.w页面调用action,我参照这个帖子http://bbs.wex5.com/forum.php?mo ... page=2#pid165019587
提示登录后才能执行action

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36185
发表于 2018-5-30 09:33:31 | 显示全部楼层
doAfterLogin方法的最后调用action,你看的是5.2版本,不是5.3版本的

调用action参考/UI2/demo/actions/process/invokeAction/mainActivity.w
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

59

主题

150

帖子

446

积分

中级会员

Rank: 3Rank: 3

积分
446
QQ
 楼主| 发表于 2018-5-30 09:41:54 | 显示全部楼层
jishuang 发表于 2018-5-30 09:33
doAfterLogin方法的最后调用action,你看的是5.2版本,不是5.3版本的

调用action参考/UI2/demo/actions/pr ...
  1. 我按照你说的那个写了一个action 传进去一个参数 后台输出  
  2. 这个方法写在了indew.js 的initPerson方法的最后面,我传进去登录人ID
  3.                 var params = new biz.Request.ActionParam();
  4.                 params.setString('personID' ,pid );
  5.                 var response = biz.Request.sendBizRequest({
  6.                         contentType : "application/json",
  7.                         dataType : "application/json",
  8.                         process : "/portal/process/message/messageProcess",
  9.                         activity : "mainActivity",
  10.                         action : 'queryMailAttachCapacity',
  11.                         directExecute : true,
  12.                         parameters : params,
  13.                         context : this.getContext(),
  14.                         callback : function(resultData) {
  15.                                 if (resultData && resultData.state) {
  16.                               var data = callbackData.response;
  17.                               alert("调用成功,返回值是"+data);       
  18.                                 }
  19.                         }
  20.                 });
复制代码
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36185
发表于 2018-5-30 09:57:07 | 显示全部楼层
具体什么问题?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

59

主题

150

帖子

446

积分

中级会员

Rank: 3Rank: 3

积分
446
QQ
 楼主| 发表于 2018-5-30 10:06:03 | 显示全部楼层

登录系统后才能执行 biz action 请求
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36185
发表于 2018-5-30 10:59:47 | 显示全部楼层
这个方法中是已经登录过的,调用action没问题
action.png
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

59

主题

150

帖子

446

积分

中级会员

Rank: 3Rank: 3

积分
446
QQ
 楼主| 发表于 2018-5-30 11:20:32 | 显示全部楼层
jishuang 发表于 2018-5-30 10:59
这个方法中是已经登录过的,调用action没问题

我也检查了下,我是把登录方法改了,改成默认system登录了,代码如下,然后就出问题了,麻烦您看下是哪里有问题
  1. import java.io.IOException;
  2. import java.io.OutputStream;
  3. import java.io.PrintWriter;
  4. import java.util.Date;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;

  8. import javax.servlet.ServletException;
  9. import javax.servlet.http.Cookie;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;

  12. import com.alibaba.fastjson.JSON;
  13. import com.alibaba.fastjson.JSONException;
  14. import com.alibaba.fastjson.JSONObject;
  15. import com.justep.auth.client.AuthUtils;
  16. import com.justep.biz.client.Action;
  17. import com.justep.biz.client.ActionEngine;
  18. import com.justep.biz.client.ActionResult;
  19. import com.justep.biz.client.ActionUtils;
  20. import com.justep.cache.SystemCache;
  21. import com.justep.message.ClientMessages;
  22. import com.justep.ui.JProcessor;
  23. import com.justep.ui.system.service.permission.ClassicPortalRequestWrapper;
  24. import com.justep.ui.system.service.portal.LoginAction;
  25. import com.justep.ui.util.UIUtils;


  26. public class Login implements JProcessor {
  27.         
  28.         static Boolean useCache = false; //!SystemUtils.isDebug(); 权限变了缓存没清有问题

  29.         public void execute(HttpServletRequest request, HttpServletResponse response)
  30.                         throws ServletException, IOException {
  31. System.out.println("==============");
  32.                 //hcr 支持oauth登录
  33.                         AuthUtils.loginAuthServer(response);
  34.                
  35.                 String bsessionid = null;
  36.                 String sysCode = null;
  37.                 String orgVersion = null;
  38.                 Cookie[] cookies = request.getCookies();
  39.                 if (cookies != null){
  40.                         for (int i = 0; i < cookies.length; i++) {
  41.                           String name = cookies[i].getName();
  42.                           if(name.equals("bsessionid")){
  43.                                   bsessionid = cookies[i].getValue();
  44.                           }
  45.                         }
  46.                 }
  47.                
  48.                 String username = "";
  49.                 Cookie[] ck                        = request.getCookies();        
  50.             if(ck != null){
  51.                     for(Cookie cookie : ck){
  52.                            
  53.                             if("ADDRESS".equalsIgnoreCase(cookie.getName())){
  54.                                     
  55.                                     username        = cookie.getValue();
  56.                             }
  57.                     }
  58.                     
  59.             }  
  60.             System.out.println("==============");
  61.             if(bsessionid == null){
  62.                         //测试登陆 单点登陆
  63.                             username="system";
  64.                         String password = ":e0d34b5ab5e5f0831ac99a9be6072f8e";
  65.                         String ip = request.getRemoteAddr();
  66.                         String language = "zh_CN";
  67.                         Date loginDate = new Date(System.currentTimeMillis());
  68.                         ActionResult actionResult = ActionEngine.login2(username, password, ip, language, loginDate, null, ActionUtils.JSON_CONTENT_TYPE, null);        
  69.                         bsessionid = actionResult.getBSessionID();
  70.             }
  71.         

  72.                 //伪装参数, 获取上下文信息
  73.                 String useName = request.getParameter("username");
  74.                 String executor = request.getParameter("executor");
  75.                 JSONObject data;
  76.                 JSONObject context;
  77.                
  78.                 if(useName==null || !useCache || !SystemCache.cache.containsKey(useName)){
  79.                         Map<String, String> params = new HashMap<String, String>();
  80.                         params.put("process", "/SA/OPM/system/systemProcess");
  81.                         params.put("activity", "mainActivity");
  82.                         params.put("$functionTree", "true");
  83.                         params.put("$widgetList", "true");
  84.                         if(executor != null)
  85.                                 params.put("executor", executor);
  86.                         else        
  87.                                 params.put("$agentList", "true");
  88.                         params.put("bsessionid", bsessionid);
  89.                         context = (JSONObject)UIUtils.getWindowContext(new ClassicPortalRequestWrapper(request, params), null, false);
  90.                         if(context.getBoolean("flag")){
  91.                                 data = (JSONObject)context.get("data");
  92.                         }else{
  93.                                 response.setCharacterEncoding("UTF-8");
  94.                                 response.setContentType(ActionUtils.JSON_CONTENT_TYPE);
  95.                                 OutputStream output = response.getOutputStream();
  96.                                 output.write(context.toString().getBytes("UTF-8"));
  97.                                 output.flush();
  98.                                 output.close();
  99.                                 return;
  100.                         }
  101.                         
  102.                         //取系统注入代码
  103.                         context.put("sys", sysCode);
  104.                         context.put("bsessionid", bsessionid);
  105.                         //不能缓存
  106.                         data.put("bsessionid", bsessionid);
  107.                         JSONObject pid = (JSONObject)data.get("bizParams");
  108.                         pid = (JSONObject)pid.get("value");
  109.                         String personID =        (String)pid.get("currentPersonID");
  110.                         data.put("layout", this.getLayout(personID, bsessionid));
  111.                         data.put("orgVersion", orgVersion);               
  112.                         
  113.                         response.setCharacterEncoding("UTF-8");
  114.                         response.setContentType(ActionUtils.JSON_CONTENT_TYPE);
  115.                         PrintWriter out = response.getWriter();
  116.                         out.write(context.toString());
  117.                         out.flush();
  118.                         
  119.                         if(useCache && (useName != null)){
  120.                                 context.put("sys", "__sysCode__");
  121.                                 context.put("bsessionid", "__bsessionid__");
  122.                                 data.put("bsessionid", "__bsessionid__");
  123.                                 data.put("orgVersion", "__orgVersion__");               
  124.                                 String ctx = context.toJSONString();
  125.                                 SystemCache.cache.put(useName, ctx);
  126.                         }
  127.                         
  128.                 }else{
  129.                         String ctx = SystemCache.cache.get(useName);

  130.                         ctx = ctx.replace("__bsessionid__", bsessionid);
  131.                         if(sysCode != null){
  132.                                 ctx = ctx.replace("__sysCode__", sysCode);
  133.                         }else{
  134.                                 ctx = ctx.replace("__sysCode__", "");
  135.                         }
  136.                         if(orgVersion != null){
  137.                                 ctx = ctx.replace("__orgVersion__", orgVersion);
  138.                         }else{
  139.                                 ctx = ctx.replace("__orgVersion__", "");
  140.                         }

  141.                         response.setCharacterEncoding("UTF-8");
  142.                         response.setContentType(ActionUtils.JSON_CONTENT_TYPE);
  143.                         PrintWriter out = response.getWriter();
  144.                         out.write(ctx);
  145.                         out.flush();
  146.                 }
  147.         }
  148.         private JSONObject getLayout(String useName, String bsessionID) throws JSONException{

  149.                 Action layoutAction = new Action();
  150.                 layoutAction.setProcess("/portal2/process/portal/portalProcess");
  151.                 layoutAction.setActivity("index");
  152.                 layoutAction.setName("selectPortal3ProfilesAction");
  153.                 layoutAction.setParameter("personID", useName);
  154.                 ActionResult result = ActionEngine.invokeAction(layoutAction, ActionUtils.JSON_CONTENT_TYPE, bsessionID, null, null);
  155.                
  156.                 JSONObject temp = (JSONObject)result.getContent();
  157.                 temp = (JSONObject)temp.get("data");
  158.                 temp = (JSONObject)temp.get("value");
  159.                
  160.                 String[] relations = new String[]{"sFunctree", "sPortal", "sOther"};
  161.                 for(String rel : relations){
  162.                         Object s = temp.get(rel);
  163.                         if( (s instanceof String && ((String)s).equals(""))) //s == JSONObject.NULL ||
  164.                                 s = "{}";
  165.                         temp.remove(rel);
  166.                         temp.put(rel.substring(1).toLowerCase(), JSON.parse((String)s));
  167.                 }
  168.                
  169.                 return temp;
  170.         }

  171. }
复制代码
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36185
发表于 2018-5-30 11:50:17 | 显示全部楼层
具体什么需求要修改登录方法?

远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-7-11 19:12 , Processed in 0.062948 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表