【问题标题】:Getting Error while clicking on a button in Orbeon Form单击 Orbeon 表单中的按钮时出错
【发布时间】:2012-02-13 16:47:01
【问题描述】:

我收到了一个错误,这不是代码所预期的。

这是我遇到的错误。

Attempting to access a sequence as a singleton item (org.orbeon.saxon.trans.XPathException)

这是我的添加按钮代码:

<xforms:trigger appearance="minimal" id="repeat-add-id" ref=".[$summary='false' and instance('abc-instance')/product/accounts]">
    <xforms:label>
        <span class="input-label">Add</span>
    </xforms:label>
    <xforms:action ev:event="DOMActivate">
        <xforms:insert nodeset="instance('abc-instance')/product/accounts[last()&lt;10]"
            origin="instance('abc-instance-template')/product/accounts" />
        <!-- <xforms:message modal="level">Xforms Message</xforms:message> -->
</xforms:trigger>

这是我的汇总变量定义

<xxforms:variable name="summary" select="instance('abc-attributes')/form-global/summary"/>

如果我删除&lt;xforms:action&gt; 中的插入命令,它将不会显示错误对话框。

感谢任何帮助。

【问题讨论】:

  • 触发器的ref 中的instance(abc-instance) 看起来不对。您很可能需要 instance('abc-instance') 中的引号。 accounts[last() &lt; 10] 对我来说也很奇怪;在那里想做什么?抱歉,如果无法运行您的代码,我无法更具体。
  • 是的,实例名称需要引号。我修改了它。但是我发现了实际问题,请参阅下面的答案。

标签: orbeon xforms


【解决方案1】:

我发现了问题。触发器本身的代码没有任何问题。我在代码的后面部分使用xxforms:valid() 作为节点集instance('abc-instance')/product/accounts。第一次运行,因为只有一个节点,所以没有错误。但是,当我单击添加按钮链接时,有 2 个节点,但 xxforms:valid() 需要一个节点,因此出现错误消息。

总结:

所以这里的底线是,当你看到这个错误“Attempting to access a sequence as a singleton item”时,这意味着你的表单中有一些函数期望单个节点是参数,但存在多个。

【讨论】:

  • 感谢您分享解决方案。有计划改进错误报告,以便更好地指示发生错误的表达式以及该表达式所在的位置。
  • 感谢 Avernet。这对调试问题很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
  • 2016-07-15
  • 2015-12-28
  • 2017-02-16
  • 1970-01-01
  • 2014-07-22
  • 2010-10-21
相关资源
最近更新 更多