zoukankan      html  css  js  c++  java
  • pack/unpack

    runbase Framwork用pack和unpack来保存用户上次操作的值,用户上次操作的值会存在SysLastValue表中,这个功能确实蛮酷,不过今天差点被这个东西给整死,在我机子运行上的好好的代码,弄到客户那边去死活run不起来,Application和DataBase都是一样的,认真地跟踪了一遍代码才知道,原来是由于我开发的机子是两层的,客户的环境是三层造成的,太大意了......
    两层代码都运行在一个进程中,没有进程间通讯的问题,pack/unpack执行情况:
    从数据库里取出上次的数据->调用unpack,并用取得的值初始化Dialog,用户看到上次操作时的值->pack,并把用户的数据写回数据库.
    三层:
    从数据库里取出上次的数据->调用unpack取出数据->调用pack,发送到client->调用unpack,并用取得的值初始化Dialog,用户看到上次操作时的值->取得用户本次操作所选择的值,调用pack将数据打包->发送到服务器端->调用unpack,进行数据操作->pack,将本次用户的选择存到数据库里.
    下面是代码:

    class PackUnPackTest extends RunBase
    {
        NoYes ifDisplay;
        NoYes ifDisplayNoSave;
        DialogField dialogIfDisplay;
        DialogField dialogIfDisplayNoSave;

        #Define.CurrentVersion(
    1)
        #LocalMacro.CurrentList
         ifDisplay
        #EndMacro

    }

    其中一个DialogField  ifDisplayNoSave没有在CurrentList中.

    static void Main(Args arg)
    {
         PackUnPackTest PUtest;
         ;
         PUtest 
    = new PackUnPackTest();

         
    if(PUtest.prompt())
            PUtest.run();

    }

    上面的Main方法,如果不加server修饰符(当然实际环境中应该用Menuitem的runon属性来定义的,这里论述方便直接在Main上添加),run方法的结果是正确的.

    public void run()
    {
        super();
        
    if(ifDisplay)
            Box::info(
    "选中俺了!");
        
    else
            Box::info(
    "没选中俺!");

        
    if(ifDisplayNoSave)
            Box::info(
    "选中俺了!");
        
    else
            Box::info(
    "没选中俺!");

    }

    如果都选中了,就会显示两次"选中俺了"这样的提示消息.
    但是如果添加了server修饰符,无论选不选第二个checkbox,结果都是一样的,第二个提示消息输出"没选中俺".
    原因就是因为第二个DialogField没有存到CurrentList中,也就不会从客户端发送到server端,这样每次判断的时候都是默认的No值,sigh.
    还有个问题没搞懂,如果在三层模式下,不想保存第二个DialogField的上次输入值,是不是就玩不转了那?等有时间再看一下.
    XPO文件也传上来,免得被格掉了.

  • 相关阅读:
    添加自动生成备注模板
    eclipse安装go插件
    CentOS7使用minikube搭建kubernetes集群
    CentOS7 设置控制台分辨率
    CentOs7安装源设置
    Java线程死锁
    keycloak +docker-compose+mysql 启动配置
    Illegal key size or default parameters
    Springboot+Spring secuirty 前后端分离后台菜单权限设计
    Springboot +vue 实现导出功能
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/465221.html
Copyright © 2011-2022 走看看