“更新部分页面时发生错误”状态500 Xpages保存

时间:2014-02-19 15:25:02

标签: xpages xpages-ssjs

我有一个由几个自定义控件组成的Xpage - 应用程序布局,内容(dojo_data网格),以及显示用户可以更改的一些用户数据的自定义控件。

在9客户端中一切正常,但在网络上我收到以下错误消息:enter image description here

日志显示:

CLFAD0134E:异常处理XPage请求

我在自定义控件中有一个带有用户数据的保存按钮,该按钮具有SSJS:

var usrNme = session.getCommonUserName();
var v:NotesView = database.getView("(employeesByFullName)");
var doc:NotesDocument = v.getDocumentByKey(usrNme);

var tmpOfficePhone = employee.getItemValueString("HR_OfficePhone")
doc.replaceItemValue("HR_OfficePhone",tmpOfficePhone);

var tmpCellPhone = employee.getItemValueString("HR_CellPhone")
doc.replaceItemValue("HR_CellPhone",tmpCellPhone);

var tmpExtension = employee.getItemValueString("HR_Extension")
doc.replaceItemValue("HR_Extension",tmpExtension);

var tmpDirectDial = employee.getItemValueString("HR_DirectDial")
doc.replaceItemValue("HR_DirectDial",tmpDirectDial);

var tmpPersonalEmail = employee.getItemValueString("HR_PersonalEmail")
doc.replaceItemValue("HR_PersonalEmail",tmpPersonalEmail);

doc.save();

var x= "alert('Your changes have been saved.')";
view.postScript(x);

我选择了部分更新,无论我选择更新,我仍然会收到错误,只是略有不同的措辞。示例:我将所有内容放在面板中并在面板上进行部分更新,然后我收到面板的错误。

它始终在客户端中运行,但从不在Web浏览器中运行。

有谁能告诉我发生了什么事?

2 个答案:

答案 0 :(得分:1)

您希望重新构建应用程序并使用数据绑定,而不是手动执行文档和控件。您可能希望从a tutorial开始,但这是它的要点:

  1. 将DominoDocument数据源添加到页面
  2. 指定文档的形式(实际上只是为了方便在Designer中使用,以及您需要/想要使用的情况.computeWithForm
  3. 通过将各种控件绑定到DominoDocument数据源来设计表单。默认情况下,它将其绑定到新的空文档。通常这是一个不错的选择(见下文)
  4. 现在,要使用该XPage实际编辑现有文档,请执行以下操作之一:

    • 打开经典表格并在beany head属性中指定:改为打开XPage(有2个属性:一个用于浏览器的客户端1)。当您使用其经典URL打开文档时,它将在XPage中打开(?OpenDocument和?EditDocument)
    • 将viewControl添加到XPage(同一页面或不同页面),在其中显示要选择的文档。在viewControl中指定用于打开文档的XPage
    • 以任何方式计算您希望网址包含documentID =从新显示切换到显示/编辑模式(观看视图控件正在计算的网址)
    • 将表单切换为“现有文档”,并将文档的docid(uniqueid)计算为属性。可以是查找范围变量或任何您认为合适的颜色。

    让我们知道它是怎么回事。查看XPages Cheatsheet以获取有关所有这些内容的简明信息。

答案 1 :(得分:0)

非常感谢西蒙。我不知道这个地方有错误。我发现的是:

Script interpreter error, line=6, col=5: 'doc' is null
     4: 
     5: var tmpOfficePhone = employee.getItemValueString("HR_OfficePhone")
->   6: doc.replaceItemValue("HR_OfficePhone",tmpOfficePhone);
     7: 
     8: var tmpCellPhone = employee.getItemValueString("HR_CellPhone")

doc是null,因为我有一段糟糕的代码来设置文档。我一直在使用session.getCommonName但应该使用:

var usrNme = @Name("[CN]",session.getEffectiveUserName());

更换这行代码后,一切正常。感谢!!!