2010-06-25 4 views
2

Je dois form1 passer un paramètre de chaîne de requête (param1) à form2. Je passe param1 = true à partir de form1. Dans la forme 2, j'essaye de placer la valeur du param1 dans une instance locale. Si je ne passe pas param1 du formulaire 1, je veux que form2 prenne la valeur de param1 pour être faux. Voici mon exemple. J'utilise la ligne suivante pour définir la valeur de param1 en l'extrayant de la chaîne de requête. Si la chaîne de requête n'a pas param1, je veux utiliser la valeur par défaut de false.XForms: Utilisation de calculate et xxforms: attribut par défaut dans la liaison à l'ensemble de nœuds

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

Cela ne fonctionne pas. Si param1 est présent, cela fonctionne et définit l'instance de querystring à true. Si param1 n'est pas présent, il ne donne rien. Je veux que ce soit faux. Comment puis-je faire cela?

Répondre

2

Vous souhaitez probablement définir le paramètre lors de l'initialisation uniquement, utilisez xxforms:default au lieu de calculate. calculate sera évalué à chaque recalcul XForms, et cela échouera car xxforms:get-request-parameter() n'est disponible que pendant l'initialisation de XForms.

Vous pouvez implémenter la condition dans XPath.

xxforms:get-request-parameter() renvoie et vide la séquence si le paramètre est manquant. Cela devrait fonctionner:

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

Ce que cela fait est que si xxforms:get-request-parameter() retourne une séquence vide, sera « faux » la première valeur de la séquence, et c'est ce qui sera utilisé pour définir la valeur.

+0

Merci! Ça marche. – Purni

Questions connexes