2009-01-16 6 views
1

Je fais mes premières expériences avec Grails et je cherche un moyen d'avoir des champs représentés par une combobox (comme des associations de domaine un-à-un et des nombres avec une contrainte de plage étroite) pour être optionnel, c'est-à-dire une entrée vide dans la liste déroulante.Comment les champs de Grails représentés par une liste déroulante peuvent-ils être rendus facultatifs?

Comment cela peut-il être réalisé? J'ai essayé à la fois d'ajouter une contrainte nullable:true et de répertorier les champs dans la propriété statique optionals, mais aucun ne produit le résultat souhaité.

Ce sont mes classes de domaine:

class Customer { 
    String name 
} 
class Book { 
    static optionals = ['year','loanedTo','loanedSince'] 
    static constraints = { 
    title(blank:false) 
    author(blank:false) 
    year(range:1900..new Date().getAt(Calendar.YEAR), nullable:true) 
    loanedTo(nullable:true) 
    loanedSince(min:new Date()) 
    } 

    String title; 
    String author; 
    Integer year; 
    Customer loanedTo; 
    Date loanedSince; 
} 

Répondre

3

J'ai trouvé que la nullable:true contrainte ne fait l'effet désiré - cependant, il ne prend pas effet immédiatement; vous devez redémarrer Grails pour le voir.

1

Si vous avez généré votre code d'échafaudage, vous devrez également le régénérer afin que l'option soit présente.

0

La balise possède également un attribut pour une valeur par défaut "non sélectionnée": noSelection. Vous pouvez l'utiliser comme ceci pour que la liste déroulante par défaut soit "---" au lieu de vos valeurs normales: noSelection = "$ {['': '---']}"

Dans le contrôleur , la valeur par défaut apparaît comme une chaîne vide, comme spécifié dans la première partie de la valeur.

Questions connexes