1、本人模仿别人的java代理程序,在表单上建立了一个按钮,按钮公式为:
@command([toolsrunmacro];"agt1")
在浏览其中打开页面后,点该按钮触发该java代理,报错:
HTTP web server: lotus notes 异常错误——unsupported trigger and search in the background or embeded agent.
2、问:何谓前台代理,何谓后台代理? 后台代理的触发方式是什么?前台触发方式是什么?
下面是别人的代码:
import java.util.Vector; import lotus.domino.AgentBase;
import lotus.domino.AgentContext;
import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.NotesException;
import lotus.domino.Session;
import lotus.domino.View;
import lotus.domino.ViewEntry;
import lotus.domino.ViewEntryCollection; // 表单显示代理1.0
// 作者:wnight88
// 2009年2月27日
public class showfileNew extends AgentBase
{
String htmlString = "";
String path = "";
String viewName = ""; public String getHeadHtml(Vector headList)
{
String tempString = "";
tempString = tempString
+ "<table class=tbbg align=center cellpadding=2 cellspacing=1>";
tempString = tempString + "<tr class=toptrbg>";
for (int i = 0; i < headList.size(); i++)
{
tempString = tempString + "<td align=center nowrap>"
+ headList.get(i) + "</td>";
}
tempString = tempString + "<td align=center nowrap>选择</td>";
tempString = tempString + "</tr>";
return tempString;
} public String getBodyHtml(Vector fieldsList, ViewEntry entry,
String fieldNameOfLink) throws NotesException
{
String tempString = "<tr class=trbg>";
Document doc = entry.getDocument();
for (int i = 0; i < fieldsList.size(); i++)
{
tempString = tempString + "<td>";
if (((String) fieldsList.get(i)).equals(fieldNameOfLink))
{
tempString = tempString + "<a href='" + path + "/" + viewName
+ "/" + doc.getUniversalID() + "?opendocument'>";
tempString = tempString
+ doc.getItemValueString((String) fieldsList.get(i));
tempString = tempString + "</a>"; }
else
{
tempString = tempString
+ doc.getItemValueString((String) fieldsList.get(i));
}
tempString = tempString + "</td>";
}
tempString = tempString + "<td align=center nowrap>"
+ "<input class='hinput' type='checkbox' name='SelDoc' value="
+ doc.getUniversalID() + "></td>";
tempString = tempString + "</tr>";
return tempString;
} public void NotesMain()
{ try
{
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Database currentDB = agentContext.getCurrentDatabase(); // 当前文档
Document currentDoc = agentContext.getDocumentContext(); // 获取要列出记录的视图名称
viewName = currentDoc.getItemValueString("viewName");
// 获取每页显示行数
int lineNum = currentDoc.getItemValueInteger("lineNum");
// 当前表单地址
String url = currentDoc.getItemValueString("curl");
// 当前页
int currentPage = currentDoc.getItemValueInteger("curpage");
path = currentDoc.getItemValueString("path");
View view = currentDB.getView(viewName);
ViewEntryCollection vec = view.getAllEntries(); // 计算总文档数和总页数
int totalDoc, totalPage;
totalDoc = vec.getCount();
if (totalDoc % lineNum == 0)
{
totalPage = totalDoc / lineNum;
}
else
{
totalPage = (totalDoc / lineNum) + 1;
} // 计算每页开始的文档号、结束的文档号
int beginDocNo, endDocNo;
if (currentPage == 1)
{
if (currentPage != totalPage)
{
beginDocNo = 1;
endDocNo = lineNum;
}
else
{
beginDocNo = 1;
endDocNo = totalDoc;
}
}
else if (totalDoc < lineNum)
{
beginDocNo = 1;
endDocNo = totalDoc;
}
else
{
beginDocNo = currentPage * lineNum - lineNum;
if (currentPage != totalPage)
{
endDocNo = currentPage * lineNum;
}
else
{
endDocNo = totalDoc;
}
} // 显示头信息
Vector headList = currentDoc.getItemValue("headSet");
htmlString = htmlString + this.getHeadHtml(headList); // 显示记录内容
Vector fieldsOfBody = currentDoc.getItemValue("fieldsOfBody");
String fieldNameOfLink = currentDoc
.getItemValueString("filedNameOfLink");
for (int i = beginDocNo; i <= endDocNo; i++)
{
htmlString = htmlString
+ this.getBodyHtml(fieldsOfBody, vec.getNthEntry(i),
fieldNameOfLink);
}
htmlString = htmlString + "</tr>";
htmlString = htmlString + "</table>";
currentDoc.replaceItemValue("htmlStr", htmlString); // 显示分页信息
int prePageNo, nextPageNo, firstPageNo, lastPageNo;
if (currentPage <= 1)
{
prePageNo = 1;
nextPageNo = 2;
}
else if (currentPage >= totalPage)
{
prePageNo = currentPage - 1;
nextPageNo = currentPage;
}
else
{
prePageNo = currentPage - 1;
nextPageNo = currentPage + 1;
}
firstPageNo = 1;
lastPageNo = totalPage;
String firstPageURL, lastPageURL, prePageURL, nextPageURL;
firstPageURL = "/" + url + "&page=" + firstPageNo;
lastPageURL = "/" + url + "&page=" + lastPageNo;
prePageURL = "/" + url + "&page=" + prePageNo;
nextPageURL = "/" + url + "&page=" + nextPageNo;
htmlString = "";
htmlString = htmlString
+ "<table border=0 align=center cellpadding=2 cellspacing=1 >"
+ "<tr bgcolor=ffffff><td>";
htmlString = htmlString + "共有" + totalDoc + "个文档 合计" + totalPage
+ "页 ";
htmlString = htmlString + "<a href='" + firstPageURL
+ "'>[首页]</a> ";
htmlString = htmlString + "<a href='" + prePageURL + "'>[上一页]</a> ";
htmlString = htmlString + "<a href='" + nextPageURL
+ "'>[下一页]</a> ";
htmlString = htmlString + "<a href='" + lastPageURL + "'>[尾页]</a> ";
htmlString = htmlString + "</td>";
htmlString = htmlString + "</tr>";
htmlString = htmlString + "</table>"; currentDoc.replaceItemValue("pageStr", htmlString);
// (Your code goes here) }
catch (Exception e)
{
e.printStackTrace();
}
}
}
@command([toolsrunmacro];"agt1")
在浏览其中打开页面后,点该按钮触发该java代理,报错:
HTTP web server: lotus notes 异常错误——unsupported trigger and search in the background or embeded agent.
2、问:何谓前台代理,何谓后台代理? 后台代理的触发方式是什么?前台触发方式是什么?
下面是别人的代码:
import java.util.Vector; import lotus.domino.AgentBase;
import lotus.domino.AgentContext;
import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.NotesException;
import lotus.domino.Session;
import lotus.domino.View;
import lotus.domino.ViewEntry;
import lotus.domino.ViewEntryCollection; // 表单显示代理1.0
// 作者:wnight88
// 2009年2月27日
public class showfileNew extends AgentBase
{
String htmlString = "";
String path = "";
String viewName = ""; public String getHeadHtml(Vector headList)
{
String tempString = "";
tempString = tempString
+ "<table class=tbbg align=center cellpadding=2 cellspacing=1>";
tempString = tempString + "<tr class=toptrbg>";
for (int i = 0; i < headList.size(); i++)
{
tempString = tempString + "<td align=center nowrap>"
+ headList.get(i) + "</td>";
}
tempString = tempString + "<td align=center nowrap>选择</td>";
tempString = tempString + "</tr>";
return tempString;
} public String getBodyHtml(Vector fieldsList, ViewEntry entry,
String fieldNameOfLink) throws NotesException
{
String tempString = "<tr class=trbg>";
Document doc = entry.getDocument();
for (int i = 0; i < fieldsList.size(); i++)
{
tempString = tempString + "<td>";
if (((String) fieldsList.get(i)).equals(fieldNameOfLink))
{
tempString = tempString + "<a href='" + path + "/" + viewName
+ "/" + doc.getUniversalID() + "?opendocument'>";
tempString = tempString
+ doc.getItemValueString((String) fieldsList.get(i));
tempString = tempString + "</a>"; }
else
{
tempString = tempString
+ doc.getItemValueString((String) fieldsList.get(i));
}
tempString = tempString + "</td>";
}
tempString = tempString + "<td align=center nowrap>"
+ "<input class='hinput' type='checkbox' name='SelDoc' value="
+ doc.getUniversalID() + "></td>";
tempString = tempString + "</tr>";
return tempString;
} public void NotesMain()
{ try
{
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Database currentDB = agentContext.getCurrentDatabase(); // 当前文档
Document currentDoc = agentContext.getDocumentContext(); // 获取要列出记录的视图名称
viewName = currentDoc.getItemValueString("viewName");
// 获取每页显示行数
int lineNum = currentDoc.getItemValueInteger("lineNum");
// 当前表单地址
String url = currentDoc.getItemValueString("curl");
// 当前页
int currentPage = currentDoc.getItemValueInteger("curpage");
path = currentDoc.getItemValueString("path");
View view = currentDB.getView(viewName);
ViewEntryCollection vec = view.getAllEntries(); // 计算总文档数和总页数
int totalDoc, totalPage;
totalDoc = vec.getCount();
if (totalDoc % lineNum == 0)
{
totalPage = totalDoc / lineNum;
}
else
{
totalPage = (totalDoc / lineNum) + 1;
} // 计算每页开始的文档号、结束的文档号
int beginDocNo, endDocNo;
if (currentPage == 1)
{
if (currentPage != totalPage)
{
beginDocNo = 1;
endDocNo = lineNum;
}
else
{
beginDocNo = 1;
endDocNo = totalDoc;
}
}
else if (totalDoc < lineNum)
{
beginDocNo = 1;
endDocNo = totalDoc;
}
else
{
beginDocNo = currentPage * lineNum - lineNum;
if (currentPage != totalPage)
{
endDocNo = currentPage * lineNum;
}
else
{
endDocNo = totalDoc;
}
} // 显示头信息
Vector headList = currentDoc.getItemValue("headSet");
htmlString = htmlString + this.getHeadHtml(headList); // 显示记录内容
Vector fieldsOfBody = currentDoc.getItemValue("fieldsOfBody");
String fieldNameOfLink = currentDoc
.getItemValueString("filedNameOfLink");
for (int i = beginDocNo; i <= endDocNo; i++)
{
htmlString = htmlString
+ this.getBodyHtml(fieldsOfBody, vec.getNthEntry(i),
fieldNameOfLink);
}
htmlString = htmlString + "</tr>";
htmlString = htmlString + "</table>";
currentDoc.replaceItemValue("htmlStr", htmlString); // 显示分页信息
int prePageNo, nextPageNo, firstPageNo, lastPageNo;
if (currentPage <= 1)
{
prePageNo = 1;
nextPageNo = 2;
}
else if (currentPage >= totalPage)
{
prePageNo = currentPage - 1;
nextPageNo = currentPage;
}
else
{
prePageNo = currentPage - 1;
nextPageNo = currentPage + 1;
}
firstPageNo = 1;
lastPageNo = totalPage;
String firstPageURL, lastPageURL, prePageURL, nextPageURL;
firstPageURL = "/" + url + "&page=" + firstPageNo;
lastPageURL = "/" + url + "&page=" + lastPageNo;
prePageURL = "/" + url + "&page=" + prePageNo;
nextPageURL = "/" + url + "&page=" + nextPageNo;
htmlString = "";
htmlString = htmlString
+ "<table border=0 align=center cellpadding=2 cellspacing=1 >"
+ "<tr bgcolor=ffffff><td>";
htmlString = htmlString + "共有" + totalDoc + "个文档 合计" + totalPage
+ "页 ";
htmlString = htmlString + "<a href='" + firstPageURL
+ "'>[首页]</a> ";
htmlString = htmlString + "<a href='" + prePageURL + "'>[上一页]</a> ";
htmlString = htmlString + "<a href='" + nextPageURL
+ "'>[下一页]</a> ";
htmlString = htmlString + "<a href='" + lastPageURL + "'>[尾页]</a> ";
htmlString = htmlString + "</td>";
htmlString = htmlString + "</tr>";
htmlString = htmlString + "</table>"; currentDoc.replaceItemValue("pageStr", htmlString);
// (Your code goes here) }
catch (Exception e)
{
e.printStackTrace();
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货