Je travaille sur une contrainte vide dans Grails. J'ai addWebsites.gsp
comme suit:La contrainte vide dans Grails ne fonctionne pas
<g:form controller="SiteURL" action="websiteAdded">
<label for="siteURL">ADD URL:</label>
<g:textField name="siteURL" value="${siteURL?.siteURL}"
style="width: 400px;height: 22px;"></g:textField>
<br />
<input type="submit" value="Save">
</g:form>
Je veux la contrainte vide sur la textField
siteURL
. La classe de domaine est SiteURL.groovy
:
class SiteURL {
String siteURL
static constraints = {
siteURL blank:false
}
}
Ma SiteURLController.groovy
classe est la suivante:
class SiteURLController {
def addWebsites() { }
def websiteAdded(){
if(request.method == 'POST') {
def u = new SiteURL()
u.properties ['siteURL']
if(u.siteURL =="") {
u.errors.rejectValue("siteURL", "cmsprofiler.siteurl.empty")
return [siteURL:u]
} else if(u.save()) {
session.siteURL= u
redirect(controller: "SiteURL", action: "websiteAdded")
} else {
return [siteURL:u]
}
}
}
def websiteNOTAdded(){ }
}
Malgré la contrainte, il ne montre pas l'erreur quand je quitte le champ de texte en blanc et me prend toujours à la websiteAdded voir page. Je ne suis pas capable de comprendre ce qui ne va pas. Je veux que l'erreur soit affichée dans le cas où un utilisateur essaye d'appuyer sur soumettre sans entrer l'URL. Toute aide serait appréciée. Merci
Merci Jeff. Quelle serait la bonne approche? J'ai appliqué la même approche pour un formulaire d'inscription et cela fonctionne très bien, alors j'ai pensé que c'était juste. J'ai débogué cela pendant des heures mais en vain. –
Il n'est pas vraiment possible que vous ayez appliqué cette même approche pour un autre formulaire et cela a fonctionné. Ce code n'attribue jamais aucune valeur aux propriétés de l'instance nouvellement créée. Vous avez probablement l'intention de faire quelque chose comme 'defu = new SiteURL (params)' ou 'defu = new SiteURL()' suivi de 'u.properties = params' ou' u.properties ['siteURL'] = params' ou quelque chose de similaire. Votre code tel qu'il est écrit n'est pas sensé. –
Merci Jeff. Je suis nouveau à Grails. Je ne suis pas sûr de ce que fait chaque ligne. Pouvez-vous expliquer ce que fait la ligne session.siteURL = u et retourner [siteURL: u]. Merci d'avance. :) –