当前位置: 代码迷 >> Lotus >> Domino7或8下怎么通过java取得种类为[显示时计算]字段
  详细解决方案

Domino7或8下怎么通过java取得种类为[显示时计算]字段

热度:147   发布时间:2016-05-05 07:13:58.0
Domino7或8下如何通过java取得种类为[显示时计算]字段?
问题描述如下:
 版本:Domino7或8
 Domino数据库文件(nsf文件)里有个Form的某个字段的种类是"显示时计算",利用Java/CORBA 类库来取得这个字段,
发现根本取不到这个字段
 javaAgent代码如下
Java code
import java.io.*;import java.util.*;import lotus.domino.*;public class JavaAgent extends AgentBase {    public void NotesMain() {        System.out.println("Start!");        try {          Session session = getSession();          AgentContext agentContext =                session.getAgentContext();          Database database = session.getDatabase("", "computefordisp.nsf");                    View view = database.getView("MemoList");                    lotus.domino.Document doc = view.getLastDocument();          Vector vt = doc.getItems();          System.out.println("has item compuefordispFld:" + doc.hasItem("compuefordispFld"));          for (int i = 0, n = vt.size(); i < n; i++) {              Item item = (Item)vt.get(i);              System.out.print(item.getName());              System.out.print(":");              System.out.println(item.getText());          }                  } catch(Exception e) {          e.printStackTrace();        }            System.out.println("End!");      }}


上面的"compuefordispFld"这个字段就是 "显示时计算"种类的,
System.out.println("has item compuefordispFld:" + doc.hasItem("compuefordispFld"));这句代码的结果是
has item compuefordispFld:false
后面循环里也没有找到这个项目。

高手帮忙看看,如何取得这中字段?

------解决方案--------------------
“显示时计算”域是只有当文档打开时才会有值,此值通常和打开时的环境有关系,例如时间,当前用户等。 后台文档(没有打开时)的“显示时计算”item是不存在的。所以你在java里面当然取不到。

除非你在程序里把后台文档打开,变成当前文档。不过,这个肯定违背你程序的意思。总之,对后台文档,在程序里要避免取“显示时计算”域值。


------解决方案--------------------
已经不支持这种显示时计算在文档中有实际的值了。
------解决方案--------------------
显示时计算的域(比如AAA)在Web端显示时,只显示了AAA的值,而没有在页面上生成<input type="text" name="AAA" value=".." />。在浏览器查看源文件就明白了。
另外如果想取得该域值,可以考虑把该域放到一个容器中,比如<span>、<div>中。。
  相关解决方案