Une XPage est utilisée pour afficher le nombre de points qu'une personne a collectés et le nombre de points restants (voir ci-dessous).

J'ai un contrôle de répétition qui obtient une collection de documents répondant à un critère spécifique. La dernière colonne du contrôle contient 5 chiffres / formulaire / comboboxes, qui sont affichés ou masqués, selon le nombre de champs sur chaque document qui contiennent des données.

La mise en page contient des cartes-cadeaux valant un certain nombre de points, et la personne peut sélectionner le nombre de cartes-cadeaux qu'elle souhaite. par exemple. Société disponible en valeurs de points requis Quantité demandée

La colonne Quantité demandée contient le chiffre / formulaire / comboboxes. Lorsque la personne sélectionne des valeurs dans la case à cocher, je souhaite que le nombre de points restant soit recalculé.

L'événement onChange des chiffres / formulaires / comboboxes appelle une fonction dans un script de sortie qui appelle un RPC, qui à son tour appelle une fonction SSJS. La fonction SSJS parcourt les documents affichés dans le contrôle de répétition, rassemblant les informations requises sur les points. J'ai alors voulu qu'il saisisse également la quantité demandée. Je comprends d'une publication précédente qu'en raison de la façon dont le chiffre / formulaire / combox est rendu, je ne peux obtenir la valeur qu'en utilisant CSJS avec dijit.byId et peut-être en mettant la valeur dans un champ caché et en la récupérant à partir de là.

Je n'arrive pas à comprendre comment je vais faire cela lorsque le contrôle de répétition permettra qu'il y ait beaucoup de combobox1 et de combobox2, etc.

La XPage n'est pas liée à un formulaire, car tous les éléments sont simplement calculés à la volée puis supprimés.

Quelle est la meilleure façon de procéder?

0
user3822341 20 nov. 2018 à 22:36

3 réponses

Meilleure réponse

J'ai compris comment faire cela. Si quelqu'un veut le code, faites-le moi savoir et je le fournirai.

0
user3822341user3822341 7 déc. 2018 à 15:44

Cela fait un moment que je n'ai pas travaillé avec le script serveur java, je le fais à la manière du bean géré avec ActionListeners. Si vous avez les données dans l'interface utilisateur, pouvez-vous éviter le traitement côté serveur et le faire côté client?

Vous pouvez également utiliser l'objet DOM XSP comme XSP.setSubmittedValue pour envoyer une paire valeur / clé avec votre demande de publication côté serveur, vous ne pouvez en avoir qu'un ... cela peut être JSON ou toute autre valeur que vous définissez à partir du javascript côté client.

0
xpagesbeast 22 nov. 2018 à 18:15

Le service JSON RPC ne peut pas interagir avec les modifications apportées dans le navigateur, voir https://www.intec.co.uk/json-rpc-service-component-tree-manipulation-openlog/. Cela pourrait être la cause de vos problèmes.

Vous pourrez peut-être le contourner en déclenchant une actualisation partielle (POST) avant d'appeler le JSON RPC. En théorie, cela pourrait fonctionner, car l'arborescence des composants (carte côté serveur de la XPage) serait mise à jour par le partialRefreshPost et les mises à jour récupérées par le JSON RPC. Il est possible que la vue de restauration reprenne une version de XPage autre que celle du navigateur, je ne sais pas. Je n'ai jamais enquêté là-dessus.

0
Paul Stephen Withers 20 nov. 2018 à 19:55