新建用户界面继承ListUI使用KDTable报错

来源:互联网 发布:选软件网 编辑:程序博客网 时间:2024/06/05 19:15
新建用户界面XXlistUI,在bos启动客户端进行调试时,进入业务单据界面时,跳出很抱歉,系统不能正常执行操作任务,请选择重新登录或退出系统的错误提示。

下面是客户端报错提示错误信息:com.kingdee.bos.BOSException: Can"t found propertyUnit: [CU] in [com.kingdee.eas.base.message.app.BMCMessage]!,  query : com.kingdee.eas.base.message.MsgQuery,  view : WHERE (CU.id = "Q1nBg08PT/KJqhBLZWuu4sznrtQ=" OR CU.id = "11111111-1111-1111-1111-111111111111CCE7AED4" OR CU.id = "00000000-0000-0000-0000-000000000000CCE7AED4") ORDER BY id ASC错误详细堆栈信息:java.lang.RuntimeException: com.kingdee.bos.BOSException: Can"t found propertyUnit: [CU] in [com.kingdee.eas.base.message.app.BMCMessage]!,  query : com.kingdee.eas.base.message.MsgQuery,  view : WHERE (CU.id = "Q1nBg08PT/KJqhBLZWuu4sznrtQ=" OR CU.id = "11111111-1111-1111-1111-111111111111CCE7AED4" OR CU.id = "00000000-0000-0000-0000-000000000000CCE7AED4") ORDER BY id ASC

解决办法:

检查抽象类的这个方法

    /**
     * output jbInit method
     */
    private void jbInit() throws Exception
    {
        this.resHelper = new ResourceBundleHelper(AbstractProblemHandleNewEditUI.class.getName());
        this.setUITitle(resHelper.getString("this.title"));
        mainQueryPK = new MetaDataPK("com.kingdee.eas.base.message", "MsgQuery");
        // CoreUI 
        this.tblMain.setFormatXml(resHelper.getString("tblMain.formatXml"));
                this.tblMain.putBindContents("mainQuery",new String[] {"",""});

  //如果不行的,这里就多了一句

        this.tblMain.putBindContents("BMCMessage",new String[] {"id"});

  //Register control's property binding
  registerBindings();
  registerUIState();
    }

切换到元数据编辑界面ListUI,把新建的ListUI界面,默认的column1,cell1删除掉,点保存,然后重新添加column和cell,尽可能不要起column1和cell1默认名称,更改一下名字。然后发布一下,刷新代码,看看那句红色的是否还存在。如果没有应该就没有问题了

 

 

在BOS设计开发工具中新建了实体(继承了CoreBase),query,EditUI(绑定了实体),ListUI(绑定了query),发布生产java文件后,实现了为实现的方法,启动测试,点开ListUI后,报错。查了query里面的sql,并没有出现cu这个东西,并且也没有加任何的过滤条件。实在不明白这个CU.id是怎么来的,哪位高手遇到过,麻烦指点一下,谢谢!错误信息:com.kingdee.bos.BOSException: Can't found propertyUnit: [CU] in [com.kingdee.eas.test0.app.Test]!,  query : com.kingdee.eas.test0.app.TestQuery,  view : WHERE (CU.id = '00000000-0000-0000-0000-000000000000CCE7AED4' OR CU.id = '11111111-1111-1111-1111-111111111111CCE7AED4' OR CU.id = '00000000-0000-0000-0000-000000000000CCE7AED4')错误详细堆栈信息:java.lang.RuntimeException: com.kingdee.bos.BOSException: Can't found propertyUnit: [CU] in [com.kingdee.eas.test0.app.Test]!,  query : com.kingdee.eas.test0.app.TestQuery,  view : WHERE (CU.id = '00000000-0000-0000-0000-000000000000CCE7AED4' OR CU.id = '11111111-1111-1111-1111-111111111111CCE7AED4' OR CU.id = '00000000-0000-0000-0000-000000000000CCE7AED4')        at: com.kingdee.eas.framework.client.ListUI.tblMain_doRequestRowSetForNoQueryPK(ListUI.java:2003)        at: com.kingdee.eas.framework.client.ListUI.tblMain_doRequestRowSet(ListUI.java:2075)        at: com.kingdee.eas.framework.client.AbstractListUI$2.doRequestRowSet(AbstractListUI.java:332)        at: com.kingdee.bos.ctrl.kdf.data.impl.DataSetWrapperFactory.fireRequestRowSet(DataSetWrapperFactory.java:257)        at: com.kingdee.bos.ctrl.kdf.data.impl.DataSetWrapperFactory.requestData(DataSetWrapperFactory.java:233)        at: com.kingdee.bos.ctrl.kdf.table.KDTDataRequestManager.requestData(KDTDataRequestManager.java:517)        at: com.kingdee.bos.ctrl.kdf.table.KDTDataRequestManager.doDataRequestReal(KDTDataRequestManager.java:435)        at: com.kingdee.bos.ctrl.kdf.table.KDTDataRequestManager.doDataRequest2(KDTDataRequestManager.java:325)        at: com.kingdee.bos.ctrl.kdf.table.KDTDataRequestManager.doDataRequest(KDTDataRequestManager.java:283)解决方式:listui默认会增加cu的过滤,重载isIgnoreCUFilter(),return true方法就可以了;