0

我的数据库的 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";

我为设置视图和显示设置视图的表单设置了公共访问权限。PasswordChangeSuccess 字段是一个富文本/MIME 字段。

我还尝试在表单上放置 $PublicAccess,但没有成功。知道有什么问题吗?

4

2 回答 2

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 中,它会影响处理。

于 2013-06-18T04:46:05.130 回答
0

弄清楚了。虽然 $PublicAccess 字段在表单上,​​但它没有被计算。现在一切似乎都在工作。

于 2013-06-18T12:18:35.070 回答