【发布时间】:2013-02-21 05:58:05
【问题描述】:
我正在使用带有标准文件上传控件的 XPage 上传文件。 在数据源上,我有一个 WebQuerySave 代理。
WQS-agent 在 LotusScript 中。
用户正在上传一个 XML 文件,我们有一个现有的帮助程序库来帮助解析正在上传的 XML - 这就是 WQS 在 LotusScript 中的原因。
由于我无法将上传的文件分离到服务器,我正在调用 Java 代理来将 XML 读取为字符串并将其存储在文档中。
我正在使用参数文档调用 Java 代理,所有基本内容。
在参数文档中,我包含了包含附件的文档的 UniversalID,这是我的问题!
Java 代理声称 UniversalID 无效:
“HTTP JVM: 4091 无效的通用 ID”
但是,如果我尝试在 LotusScript 代理中查找文档,则在调用 Java 代理之前,会使用相同的 UNID 找到该文档: 设置 tempDoc = db.Getdocumentbyunid(unid)
Java 代码:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import lotus.domino.Agent;
import lotus.domino.AgentBase;
import lotus.domino.AgentContext;
import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.NotesException;
import lotus.domino.Session;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Database db = agentContext.getCurrentDatabase();
Agent agent = agentContext.getCurrentAgent();
// Get document used for passing data
System.out.println(agent.getParameterDocID());
Document paramDoc = db.getDocumentByID(agent.getParameterDocID());
String UniversalID = paramDoc.getItemValueString("unid");
System.out.println(UniversalID);
Document doc = db.getDocumentByUNID(UniversalID);
当我运行 Java 代理时,我不会从打印命令中得到任何东西,但也许这是意料之中的......(?)
如果我在现有文档上手动运行所有内容,它就可以工作。但不是在通过浏览器提交的文档上。
在我看来,包含附件的文档还没有准备好用于 Java。
多米诺 8.5.3
非常感谢任何帮助!
/J
附:我是 Java 新手,所以你知道.. ;-)
【问题讨论】:
-
LotusScript WQS 代理中的上下文文档是内存中的文档,尚未保存。在 Java 代理中,getDocumentByUNID 正在当前数据库中查找已保存的文档。
-
是的,我知道。我已经尝试保存文档上下文文档。但它在 Java 中仍然不可用。尝试在 Java 中睡觉,以防万一。但还是不行。
-
我认为当您保存上下文文档时,UNID 会发生变化。
-
您能否将 LotusScript 代码的相关部分添加到您的帖子中?另外,您能否扩展 Java 代码以显示您在 catch 块中拥有的内容?
标签: java xpages lotus-domino