2

我让 form1 将查询字符串参数(param1)传递给 form2。我从 form1 传递 param1=true。在表格 2 中,我试图将 param1 的值设置为本地实例。如果我不从表单 1 传递 param1,我希望 form2 将 param1 的值设为 false。这是我的例子。

<xforms:instance id="querystring-instance">
    <query-string>
        <param1></param1>
    </query-string>
</xforms:instance>

我正在使用以下行通过从查询字符串中获取它来设置 param1 的值。如果查询字符串没有 param1,我想使用默认值 false。

<xforms:bind nodeset="instance('querystring-instance')/param1" calculate="xxforms:get-request-parameter('param1')" xxforms:default="false()" />

这不起作用。如果 param1 存在,它将起作用并将查询字符串实例中的设置为 true。如果 param1 不存在,则设置为空。我希望将其设置为 false。我该怎么做呢?

4

1 回答 1

2

您可能只想在初始化时设置参数,因此请使用xxforms:default而不是calculate. calculate将在每次 XForms 重新计算时进行评估,这将失败,因为xxforms:get-request-parameter()仅在 XForms 初始化期间可用。

您可以在 XPath 中实现条件。

xxforms:get-request-parameter()如果参数丢失,则返回并清空序列。这应该有效:

<xforms:bind nodeset="instance('querystring-instance')/param1"
             xxforms:default="(xxforms:get-request-parameter('param1'), 'false')[1]"/>

它的作用是,如果xxforms:get-request-parameter()返回一个空序列,那么序列的第一个值将是“假”,这就是将用于设置值的内容。

于 2010-06-26T16:58:47.077 回答