Java getDocumentContext()上的org.openntf.domino异常
我正在尝试获取从web触发的代理的查询字符串参数:Java getDocumentContext()上的org.openntf.domino异常,java,lotus-domino,Java,Lotus Domino,我正在尝试获取从web触发的代理的查询字符串参数: http://myhost/mydb.nsf/myagent?open&reportID=96c6 使用org.openntf.dominoapi并运行domino9服务器HF441和org.openntf.domino.xsp_1.0.0.201309021740 我得到一个例外: [0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: org.openntf.domino.exceptio
http://myhost/mydb.nsf/myagent?open&reportID=96c6
使用org.openntf.dominoapi并运行domino9服务器HF441和org.openntf.domino.xsp_1.0.0.201309021740
我得到一个例外:
[0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: org.openntf.domino.exceptions.UndefinedDelegateTypeException
[0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: at org.openntf.domino.utils.Factory.getParentDatabase(Factory.ja
va:613)
[0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: at org.openntf.domino.impl.Document.(Document.java:109)
[0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: at org.openntf.domino.utils.Factory.fromLotus(Factory.java:251)
[0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: at org.openntf.domino.impl.AgentContext.getDocumentContext(Agent
Context.java:85)
[0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: at JavaAgent.NotesMain(JavaAgent.java:25)
[0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: at lotus.domino.AgentBase.runNotes(Unknown Source)
[0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: at lotus.domino.NotesThread.run(Unknown Source)
[0D40:0045-1488]2013-09-03 12:01:56 HTTP-JVM:org.openntf.domino.exceptions.UndefinedLegateTypeeException
[0D40:0045-1488]2013-09-03 12:01:56 HTTP-JVM:org.openntf.domino.utils.Factory.getParentDatabase(Factory.ja
弗吉尼亚州:613)
[0D40:0045-1488]2013-09-03 12:01:56 HTTP-JVM:at org.openntf.domino.impl.Document.(Document.java:109)
[0D40:0045-1488]2013-09-03 12:01:56 HTTP-JVM:org.openntf.domino.utils.Factory.fromLotus(Factory.java:251)
[0D40:0045-1488]2013-09-03 12:01:56 HTTP-JVM:org.openntf.domino.impl.AgentContext.getDocumentContext(代理
Context.java:85)
[0D40:0045-1488]2013-09-03 12:01:56 HTTP JVM:at JavaAgent.NotesMain(JavaAgent.java:25)
[0D40:0045-1488]2013-09-03 12:01:56 HTTP JVM:at lotus.domino.AgentBase.runNotes(未知源)
[0D40:0045-1488]2013-09-03 12:01:56 HTTP JVM:at lotus.domino.NotesThread.run(未知源)
导入java.io.PrintWriter;
导入java.util.Hashtable;
导入org.openntf.domino.AgentBase;
导入org.openntf.domino.AgentContext;
导入org.openntf.domino.Database;
导入org.openntf.domino.Document;
导入org.openntf.domino.Session;
公共类JavaAgent扩展了AgentBase{
布尔调试=假;
印刷作家;
公共无效注释main(){
试一试{
Session=getSession();
AgentContext AgentContext=session.getAgentContext();
pw=getAgentOutput();
Database reportDB=session.getDatabase(session.getServerName(),
“报告,nsf”);
Document doc=agentContext.getDocumentContext();
字符串qs=doc.getItemValueString(“查询字符串”);
Hashtable ht=CommonJ.parseQueryString(qs);
String reportID=(String)ht.get(“reportID”);
Document reportDoc=reportDB.getDocumentByID(reportID);
if(null!=reportDoc){
字符串文件名=reportDoc.getFirstItem(“$File”)
.getValueString();
println(reportDoc.getHttpURL()+“/$file/”+文件名);
}否则{
println(“对不起,找不到报告!”);
}
}捕获(例外e){
println(“对不起,找不到报告!”);
pw.println(e);
e、 printStackTrace();
}
}
}
我已在当前分支中修复了此问题。如果您要自己修改和构建源代码,则以下是更改:
具体来说,在org.openntf.domino.impl.AgentContext的“getCurrentDatabase”方法中,将“fromLotus”调用中的最后一个“this”更改为“getCurrentDatabase()
或者,我从我的开发环境中导出了一个jar,它在我的测试中修复了它(这基本上是M3加上设计树中的一些工作以及这个修复):
如果你还遇到麻烦,请告诉我 Thx,太快了;)等待M3发布可以吗?我们有一些开发服务器和客户端要部署它,我刚刚在9月2日的最新版本中做了这件事……嗯,发布一个快速补丁版本可能是值得的,因为这个bug肯定会有麻烦。看起来Nathan用一个补丁版本打败了我:你完成了我,Jesse.:-)
import java.io.PrintWriter;
import java.util.Hashtable;
import org.openntf.domino.AgentBase;
import org.openntf.domino.AgentContext;
import org.openntf.domino.Database;
import org.openntf.domino.Document;
import org.openntf.domino.Session;
public class JavaAgent extends AgentBase {
boolean debug = false;
PrintWriter pw;
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
pw = getAgentOutput();
Database reportDB = session.getDatabase(session.getServerName(),
"report.nsf");
Document doc = agentContext.getDocumentContext();
String qs = doc.getItemValueString("Query_String");
Hashtable ht = CommonJ.parseQueryString(qs);
String reportID = (String) ht.get("reportID");
Document reportDoc = reportDB.getDocumentByID(reportID);
if (null != reportDoc) {
String filename = reportDoc.getFirstItem("$File")
.getValueString();
pw.println(reportDoc.getHttpURL() + "/$file/" + filename);
} else {
pw.println("<h2>Sorry, report not found!");
}
} catch (Exception e) {
pw.println("<h2>Sorry, report not found!");
pw.println(e);
e.printStackTrace();
}
}
}