2017-08-31 4 views
2

J'ai calculé ce texte lié à un champ de corps en utilisant ELComment envoyer une requête de données de document à un contrôle personnalisé dans XPages?

<xp:text escape="true" id="computedField1" value="#{doc.Body}"></xp:text> 

Maintenant, je dois stocker ce computedField dans un contrôle personnalisé et envoyer dans le doc? Quelle est la définition des biens dois-je utiliser et comment puis-je faire référence à la compositeData au champ du corps dans cc

grâce

Thomas

Répondre

7

Créer une propriété personnalisée sur votre contrôle personnalisé appelé dataSource et définissez le type com.ibm.xsp.model.DataSource

Créer une deuxième propriété personnalisée appelée computedFieldName et réglez son type à string

Dans le champ calculé dans le contrôle personnalisé définir la valeur comme

value="#{compositeData.dataSource[compositeData.computedFieldName]}"

Lorsque vous utilisez le contrôle personnalisé vient définir les propriétés personnalisées telles que:

computedFieldName="Body" dataSource="#{doc}"

+0

je pourrais manquer quelque chose. Pourquoi ne pas ignorer entièrement la définition de propriété et dans le CC et continuer à lier le champ calculé à la source de données nommée définie sur XPage, simplement # {doc.Body}. –

+0

@ PaulDella-Nebbia Faire comme je l'ai indiqué signifie que le contrôle personnalisé est plus réutilisable. Il peut gérer des champs avec des noms différents et des sources de données différentes aussi. Il existe un moyen d'écrire ceci pour permettre au contrôle personnalisé d'accepter n'importe quoi, pas seulement un document en tant que source de données, par ex. un haricot. Mais les détails de cette méthode m'échappent à la minute. –

+0

Mon exemple a été simplifié pour Stack overflow, Le vrai scénario contient le contrôle de téléchargement de fichiers utilisé dans de nombreux XPages qui ont différents noms de sources de données –