我让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,它将工作并将in querystring-instance设置为true。如果param1不存在,则设置为空。我希望它被设置为false。我该怎么做?
答案 0 :(得分:2)
您可能只想在初始化时设置参数,因此请使用xxforms:default
代替calculate
。将在每个XForms重新计算时评估calculate
,这将失败,因为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()
返回一个空序列,那么序列的第一个值将为'false',这就是用于设置值的内容。