问题描述如下:
版本: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>中。。