我的数据库的ACL将Anonymous设置为No Access,并设置了Read Public文档。我有一个Xpage,我设置为公共访问。页面显示正常,无需登录,但应该根据从视图中查找的文档中的字段显示消息的页面除外。如果为xPage启用了公共访问,则查找失败。如果我关闭xPage的公共访问权限,那么我当然要求登录以显示页面,但页面上会显示消息。
这是我正在使用的公式。我已经修改了一下,以帮助解决这个问题。使用xPage集的公共访问,代码显示“4”(在视图中找不到文档)。
var vw:NotesView = database.getView("Setup");
var doc:NotesDocument = vw.getDocumentByKey("Setup",true);
if (doc != null)
{
try
{
return "1"+doc.getFirstItem("PasswordChangeSuccess").getMIMEEntity().getContentAsText();
}
catch (e)
{ try
{
return "2"+doc.getFirstItem("PasswordChangeSuccess").getText();
}
catch (e)
{
return "3";
}
}
}
else return "4";
我为Setup视图和显示Setup视图的表单设置了Public Access。 PasswordChangeSuccess字段是richtext / MIME字段。
我还尝试在表单上放置一个$ PublicAccess而没有运气。知道什么是错的吗?
答案 0 :(得分:1)
e.message为您提供错误消息,将其添加到您的输出中。我的赌注是缺乏访问权限。试试这个:
var vw:NotesView = database.getView("Setup");
if (vw == null ) {
print("Failed to get the view");
return "NULL view encountered";
}
print("View is valid");
var doc:NotesDocument = vw.getDocumentByKey("Setup",true);
if (doc == null) {
print("Doc could not be obtained");
return("Doc could not be obtained");
}
// Only here the fun starts!
try {
return "1"+doc.getFirstItem("PasswordChangeSuccess").getMIMEEntity().getContentAsText();
} catch (e) {
print("MIME failed:" +e.message);
try {
return "2"+doc.getFirstItem("PasswordChangeSuccess").getText();
} catch (e) {
print(e.message);
return e.message;
}
}
// If you got here, what happened?
return("Miracle");
您还应该删除Java / C格式设置首选项。在JavaScript中,行结尾具有重要意义。所以
function bla()
{
}
的处理方式与
不同 function bla() {
}
至少有一个额外的该行结束需要一个自动插入的分号处理步骤。在Java / C中,它是编码品味的问题(由您决定)。在JavaScript中,它会影响处理。
答案 1 :(得分:0)
想出来。虽然$ PublicAccess字段在表单上,但它没有被计算。现在一切似乎都在起作用。