Grails ne sauveront pas, mais ont aucune erreur
-
29-09-2019 - |
Question
Salut j'ai un domaine si simple comme ce qui suit
// page 52 Bankruptcy Questions
class FamilyLawFinancial{
Date dateOfTheOrder ;
boolean isPartyToFamilyLawProperty = false;
boolean isCurrentlyInvolvedInFamilyLawProperty = false;
boolean isBecomeInvolvedInProceedings = false;
static belongsTo=[person:Person];
static constraints = {
dateOfTheOrder(nullable:true);
isPartyToFamilyLawProperty(nullable:false);
isCurrentlyInvolvedInFamilyLawProperty(nullable:false);
isBecomeInvolvedInProceedings(nullable:false);
}
String toString(){
"${id}"
}
}
et est le contrôleur ici que les données de sauvegarde:
def save = {
def person = Person.get(session.curperson.id);
def obj = FamilyLawFinancial.findByPerson(person);
if(obj == null){
obj = new FamilyLawFinancial();
obj.person = person ;
}
params.dateOfTheOrder = myutil.formatDate(params.dateOfTheOrder);
obj.properties = params;
println(obj.hasErrors());
println(obj.dateOfTheOrder);
if(obj.hasErrors() && !obj.save(flush:true)){
println("errors: ${obj.errors}");
flash.message = "error found";
println("save familyLawFinancial errors: ${errors}");
}else{
flash.message = "saved ";
}
redirect(controller:'frontPage', action:'index'); return ;
}
Le faux produits obj.hasErrors () (cela signifie pas d'erreur), mais il l'habitude de sauvegarder dans la base de données. Toute idée comment débugger?
ps: myutil.formatDate () -> pour convertir la chaîne de date tel que 19/11/2010 à Date ()
La solution
if(obj.hasErrors() && !obj.save(flush:true)){
La condition après &&
ne sera pas évalué si la condition avant Equivaut à false
.
évalue de false && true
à false
, évaluant la deuxième condition serait inefficace du point de vue de la langue.
Après tout, dans ce cas, obj.save(..)
ne sera jamais appelé.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow