公共访问查找失败

时间:2013-06-17 17:28:18

标签: xpages

我的数据库的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而没有运气。知道什么是错的吗?

2 个答案:

答案 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字段在表单上,​​但它没有被计算。现在一切似乎都在起作用。