Graal valeurs de réglage à Sélectionner (menu déroulant) pour une valeur booléenne
Je suis en utilisant le Graal cadre. Dans mon contrôleur Utilisateur, j'ai un champ booléen nommé "active", qui contrôle si les utilisateurs sont autorisés à accéder. L'action login vérifie cette valeur lorsque l'utilisateur est connecté.
Mon domaine:
class User {
Boolean active
}
Mon point de vue (modifier.spg):
<g:select id="active" name="active" from="${[1,0]}" value="${userInstance?.active}" />
La valeur enregistre correctement dans la base de données, mais je veux que l'État de Compte déroulant à-dire "Activé" ou "Désactivé" au lieu de "1" ou "0", comme il le fait maintenant.
Il doit également afficher la valeur actuelle lorsque la modification de la page est chargée. Actuellement, il indique toujours la valeur "1", même si l'utilisateur a la valeur de "0" dans la base de données.
Cela semble comme il serait très facile, mais je n'ai pas été en mesure de trouver des exemples de quelqu'un paramètre de leur liste déroulante de valeurs dans le cadre du SPG, et rien de ce que j'ai essayé jusqu'à présent est de travail. Merci!
Vous devez vous connecter pour publier un commentaire.
Je vois deux solutions, à la fois dans la documentation.
L'un est pour nous l'
keys
paramètre de la balise:Cela fournit une liste différente de touches vs la liste de valeurs.
L'autre solution est d'utiliser le
optionKey
et/ouoptionValue
paramètres, mais ce serait nécessiterait la liste contenant les objets ou quelque chose de semblable qui pourrait être utilisé pour rechercher les valeurs:Dans
src/groovy/BooleanSelectOption.groovy
:De votre point de vue:
Maintenant la balise est à la recherche de la clé, basée sur un haricot propriété des éléments dans la liste. Aussi, un
enum
pourrait fonctionner ici, trop.Évidemment la première technique est plus propre pour de courtes listes, mais je voulais montrer que les deux options pour les situations plus complexes. Je n'ai pas testé le deuxième exemple, soit.
Une note plus: Vous trouverez probablement que les clés
0
et1
ne fonctionnent pas vraiment, parce queDisabled
n'obtiendrez pas sélectionné (dans mon expérience), si la valeur estfalse
. Je ne sais pas si vous pouvez vous en sortir avec l'aide detrue
etfalse
, mais vous devriez vérifier pour s'assurer que vous obtenez ce que vous attendez.Il y a en fait une troisième option, sans doute le plus robuste de la solution, aussi dans les docs:
Utiliser le
valueMessagePrefix
paramètre pour permettre à la valeur affichée à être regardé de l'i18n messages.Dans
grails-app/i18n/messages.groovy
:De votre point de vue:
Cela a l'avantage de vous permettre d'avoir des étiquettes différentes pour les différentes langues, si jamais vous en avez besoin.
Vous pouvez utiliser
optionKey
etoptionValue
d'utiliser une propriété de l'objet ou de la valeur de la carte pour les clés et les valeurs. Essayez quelque chose comme ceci:Comme une alternative pour les cas de ce genre quand il apparaît, il y aura beaucoup plus de traitement impliqués que la tâche de bons de souscription oubliez pas que vous pouvez juste de secours à la plaine de vieux html. E. g.