2

クエリ文字列パラメータ(param1)をform2に渡すform1があります。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が存在する場合、それは機能し、inquerystring-instanceをtrueに設定します。param1が存在しない場合、何も設定されません。falseに設定したい。どうすればよいですか?

4

1 に答える 1

2

おそらく初期化時にのみパラメータを設定したいので、xxforms:defaultの代わりにを使用してくださいcalculate。XFormsが再計算されるたびに評価されますが、XFormsの初期化中にのみ使用可能であるcalculateため、失敗します。xxforms:get-request-parameter()

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」になり、それが値の設定に使用されることを意味します。

于 2010-06-26T16:58:47.077 に答える