壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: tchen

[OAF] OAF 查询问题

  [复制链接]
 楼主| 发表于 2010/8/26 14:11:03 | 显示全部楼层
页面下方的table中,又没有可输入的内容。

那么,这个VO为什么要基于EO来建立呢?
--------------------------
因为需求是要求对每一条LINE 可以做DELETE,(比如USER 觉得这条记录输错了,要删掉).
发表于 2010/8/26 14:16:24 | 显示全部楼层
如果,是要删掉的话,你可以取到headID以后,

输入VO1(detail页的上半部分的关联的那个VO),找到相应记录后delete掉,即可。

所以,VO2还是可以不基于EO来创建的。

你先试试VO2不基于EO时,查询时,有数据否。

若能有数据,后面的事情,都有办法解决的。
 楼主| 发表于 2010/8/26 14:24:53 | 显示全部楼层
谢谢..你的意思是说按照我当前建立的VO2 并且用上面的代码查询是有问题的,对吗? 我会再建一个VO3 来试试..
发表于 2010/8/26 14:27:16 | 显示全部楼层
关键是不要创建基于EO的VO。

因为,怀疑EO缓存有问题。
 楼主| 发表于 2010/8/26 15:20:41 | 显示全部楼层
Sumury: 你刚刚是说用下面方法获取当前页面的SHIP_HEADER_ID值 对吗?
String strParamA = (String)pageContext.getTransactionTransientValue("ShipHeaderId");
----
然后再调用initQueryDetails
Serializable[] parameters = { strParamA };
am.invokeMethod("initQueryDetails", parameters);
发表于 2010/8/26 15:25:51 | 显示全部楼层
对的,不过前提是:
Process request:
    String id = pageContext.getParameter("ShipHeaderId");
    if(id != null && !"".equals(id))
      pageContext.putTransactionTransientValue("ShipHeaderId", id);
 楼主| 发表于 2010/8/26 15:31:42 | 显示全部楼层
组合起来是下面的吗? 不好意思我对JAVA 真的很菜..
--------
String id = pageContext.getParameter("ShipHeaderId");
    if(id != null && !"".equals(id))
   {
      pageContext.putTransactionTransientValue("ShipHeaderId", id);
   }
Serializable[] parameters = { id };
am.invokeMethod("initQueryDetails", parameters);
发表于 2010/8/26 15:39:01 | 显示全部楼层
应该是
String id = pageContext.getParameter("ShipHeaderId");
    if(id != null && !"".equals(id))
   {
      pageContext.putTransactionTransientValue("ShipHeaderId", id);
   }
   else
   {
    id = (String)pageContext.getTransactionTransientValue("ShipHeaderId");
    }
Serializable[] parameters = { id };
am.invokeMethod("initQueryDetails", parameters);
 楼主| 发表于 2010/8/26 16:01:36 | 显示全部楼层
新建了一个没有基于EO 的VO3,替换原先的VO2 ,还是查不到数据,真是奇怪的的问题......
发表于 2010/8/26 16:04:02 | 显示全部楼层
页面不要forwardImp。。。

估计你的processRequest 里处理的不对了。
 楼主| 发表于 2010/8/26 16:09:30 | 显示全部楼层
本帖最后由 tchen 于 2010/8/26 16:13 编辑

这是我PROCESSQuest 代码:
public void processRequest(OAPageContext pageContext, OAWebBean webBean)
  {
    super.processRequest(pageContext, webBean);
    OAApplicationModule am = pageContext.getApplicationModule(webBean);
    if (!pageContext.isFormSubmission())
    {
   //   OAApplicationModule am = pageContext.getApplicationModule(webBean);
      am.invokeMethod("createheaderline",null);
    }

   OATableBean table = (OATableBean)webBean.findIndexedChildRecursive("SummaryQueryResult");
  // OATableBean table = (OATableBean)webBean;
   table.prepareForRendering(pageContext);
   DataObjectList columnFormats = table.getColumnFormats();
   DictionaryData columnFormat = null;
   int childIndex = pageContext.findChildIndex(table, "DeleteFlag");
   columnFormat =(DictionaryData)columnFormats.getItem(childIndex);
   columnFormat.put(COLUMN_DATA_FORMAT_KEY, ICON_BUTTON_FORMAT);


////pass item value from master page to detail page//start
    String strParamA = (String)pageContext.getTransactionTransientValue(PARAM_A);
    if (strParamA != null && !"".equals(strParamA.trim()))
    {
      pageContext.removeTransactionTransientValue(PARAM_A);
      try
      {
        ((OAMessageTextInputBean)webBean.findChildRecursive(PARAM_A)).setValue(pageContext, strParamA);
      }
      catch (OAException oe)
      {
      }
    }
////pass item value from master page to detail page//end
  //  OAViewObject vo= (OAViewObject)am.findViewObject("CreateSummaryLineVO1");
  //  String id = (String)vo.getCurrentRow().getAttribute("ShipHeaderId");
//    String id = pageContext.getParameter("ShipHeaderId");
   
//   Serializable[] parameters = { strParamA };
//    am.invokeMethod("initQueryDetails", parameters);
  //Query Data End

     String id = pageContext.getParameter("ShipHeaderId");
      if(id != null && !"".equals(id))
      {
        pageContext.putTransactionTransientValue("ShipHeaderId", id);
      }
     else
      {
      id = (String)pageContext.getTransactionTransientValue("ShipHeaderId");
      }
      Serializable[] parameters = { id };
      am.invokeMethod("initQueryDetails", parameters);

  }
 楼主| 发表于 2010/8/26 16:11:50 | 显示全部楼层
这是我的processFormRequest 代码, 我甚至把查询再两个地方都放了, 还是不行了..
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
  {
    super.processFormRequest(pageContext, webBean);
    OAApplicationModule am = pageContext.getApplicationModule(webBean);
  if (pageContext.getParameter("Addline") != null)
  {
  //Get sequence id start
    OAViewObject vo1= (OAViewObject)am.findViewObject("CreateSummaryLineVO1");
    OADBTransaction transaction = (OADBTransaction)am.getOADBTransaction();
    Number ShipLinId = transaction.getSequenceValue("SEAMSA_MSA_SHIP_LINES_S");
    vo1.getCurrentRow().setAttribute("ShipLineId",ShipLinId);
  //Get sequence id end  

  //commit data to db
    am.invokeMethod("addline");

   /* String id = pageContext.getParameter("ShipHeaderId");
    Serializable[] parameters = { id };
    am.invokeMethod("initQueryDetails", parameters); */

     String id = pageContext.getParameter("ShipHeaderId");
      if(id != null && !"".equals(id))
      {
        pageContext.putTransactionTransientValue("ShipHeaderId", id);
      }
     else
      {
      id = (String)pageContext.getTransactionTransientValue("ShipHeaderId");
      }
      Serializable[] parameters = { id };
      am.invokeMethod("initQueryDetails", parameters);
  }
  
if (pageContext.getParameter("Clearline") != null)
    {
  // am.invokeMethod("createheaderline",null);
   OAViewObject avo1= (OAViewObject)am.findViewObject("CreateSummaryLineVO1");
  /* Row row = avo1.getCurrentRow();
    int intAttributeCount = row.getAttributeCount();
    for (int i = 0; i < intAttributeCount; i++)
    {
      row.setAttribute(i, null);
    } */
   
   avo1.getCurrentRow().setAttribute("CreditAccountNumber",null);
   avo1.getCurrentRow().setAttribute("PartNumber",null);
   avo1.getCurrentRow().setAttribute("UnitOfMeasure",null);
   avo1.getCurrentRow().setAttribute("CountryOfOrigin",null);

    }
   
if ("delete".equals(pageContext.getParameter("event")))
  {
   String lineNumber = pageContext.getParameter("lineNum");
   Serializable[] parameters = {lineNumber};;
   am.invokeMethod("DeleteLineId",parameters);
  }

if (pageContext.getParameter("DeleteMulti")!=null)
{
   am.invokeMethod("deleteLine");
}
  
}


}
发表于 2010/8/26 16:21:16 | 显示全部楼层
本帖最后由 sumury 于 2010/8/26 16:22 编辑

在VO的executeQuery();后面追加
System.out.println(getQuery());
System.out.println(Headerid);
看看结果是什么,贴出来。
 楼主| 发表于 2010/8/26 16:35:27 | 显示全部楼层
我一直用的本机调试 是不是不能看日志了..没看到这 cz.uimanager.logpath

页面最下方左下角 About this Page > Java System Properties > cz.uimanager.logpath

在cz.uimanager.logpath对应的目录,用ftp登录,参看该目录下的 jserv.log 文件。
发表于 2010/8/26 16:38:06 | 显示全部楼层
本机调试看Jdevelop的控制台。

上面的是服务器版的调试。
 楼主| 发表于 2010/8/27 09:16:35 | 显示全部楼层
本帖最后由 tchen 于 2010/8/27 09:26 编辑

看起来HEADER_ID 值没有得到, 我在INITQUERY 只是留了   executeQuery(); 能查到所有的记录..
public void initQuery(String Headerid)
  {

       executeQuery();
   
  }
 楼主| 发表于 2010/8/27 09:52:32 | 显示全部楼层
刚刚把机器重启了一把, 重新打开JDEVELOPER运行, 发现这次打开页面很慢, 结果居然能查询到记录, 难道之前的改动都没生效. ....晕了..
 楼主| 发表于 2010/8/27 10:35:01 | 显示全部楼层
本帖最后由 tchen 于 2010/8/27 10:36 编辑

刚刚又试了一把,和重启没关系,
因为我是根据SHIP_HEADER_ID 作为参数进行查询. 根据测试的结果一定要把SHIP_HEADER_ID 显示在页面上并且属性是要MESSAGETESTINPUT, 才能查询出结果.
设置成MESSAGESTYLETEXT 只读都不行. 啊有什么好的方法..sumury
我是不想显示SHIP_HEADER_ID 在页面, 实在不行,那怕只读都行..

谢谢..
 楼主| 发表于 2010/8/27 12:19:03 | 显示全部楼层
刚刚在CSS 中用了{display:none;} 然后引用到这个ITEM, OK 了.
发表于 2010/8/27 15:08:00 | 显示全部楼层
常规的做法是创建formValue,然后将其关联VO属性。

OAF页面中包了一层form,所有的item都在这个form中,

如果是messageStyleText,则相当于一串文本,提交submit请求的时候,当然是取不到值的。

如果是messageInputText,则相当于一个type="text"的input输入框,所以能取到值。

而formValue,则相当于type="hidden",所以也是可以取得到值的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 22:22 , Processed in 0.017330 second(s), 13 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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