2017-09-04 5 views
0

Salut, je suis très nouveau dans Grails et j'ai une question très simple dans les grails et j'espère que quelqu'un peut m'aider.Grails f: affichage de champ sélectionné dropdown

J'ai une personne de classe simple de domaine comme suit:

class Person { 

    String name // name of the person 
    Date dob  // date of birth 

} // end of class 

J'ai déjà quelques entrées Personne dans ma base de données. Dans une autre forme, je souhaite que les utilisateurs sélectionnent le nom de la personne dont l'âge est supérieur à 21 dans une liste déroulante. En ce moment, il ressemble à ceci:

<fieldset class="form"> 

    <f:field bean="Person" property="name" /> 

</fieldset> 

Comment puis-je filtrer toutes les autres personnes de la base de données et afficher uniquement les noms des personnes âgées de plus de 21 ans qui?

Merci beaucoup d'avance!

+0

vous pouvez utiliser 'Person.findAllByDobGreaterThanEquals (someVariableDate)' et vérifier à docs: http://docs.grails.org/3.1.1/ref/Domain%20Classes/findAllBy.html – fsi

+0

Merci @fsi. Cela marche! –

Répondre

0

Recherchez les personnes âgées de plus de 21 ans dans le contrôleur, puis transmettez-les à la carte graphique pour les afficher. Quelque chose comme ceci:

import groovy.time.TimeCategory 

def create() { 

// all your other codes 
def adults = Person.findAllByDobGreaterThanEquals(new Date() - 21.year) 

// other codes.... 
respond new Person(params), model:[adults :adults] 
} 

Puis l'afficher dans le gsp avec le resultset.

<fieldset class="form"> 

    <f:field bean="Person" property="name" > 
     <g:select name="name" from="${adults}" optionKey="id" /> 
    </f:field> 

</fieldset>