Je lance une requête pour vérifier si un ID d'entité existe pour plusieurs ID de compte. Si le résultat n'est pas nul, alors je dois soit lancer une erreur, soit afficher un message flash.Grails - Rendu Flash.Message personnalisé
Le code de la méthode est comme ci-dessous:
def save() {
def SAMLInfoInstance = new SAMLInfo(params)
def account = Account.get(params?.accountId)
SAMLInfoInstance.setAccount(account)
def samlInfoInstanceList = SAMLInfo.executeQuery("from SAMLInfo " +
" where account.id <> ? " +
" and entityId = ?", [SAMLInfoInstance.accountId, SAMLInfoInstance.entityId])
if (samlInfoInstanceList?.size > 0){
flash.message = message(code: 'test.not.created.message', args: [message(code: 'SAMLInfo.label', default: 'SAMLInfo'), SAMLInfoInstance.entityId])
/*flash.message = "default.not.created.message"
flash.args = ["SAMLInfo", SAMLInfoInstance.entityId]
flash.default = "SAMLInfo cannot be created"
*/
render(view: "create", model: [SAMLInfoInstance: SAMLInfoInstance])
return
}
if (!SAMLInfoInstance.save(flush: true)) {
render(view: "create", model: [SAMLInfoInstance: SAMLInfoInstance])
return
}
flash.message = message(code: 'default.created.message', args: [message(code: 'SAMLInfo.label', default: 'SAMLInfo'), SAMLInfoInstance.entityId])
redirect(action: "list", id: SAMLInfoInstance.account.id)
}
À mon avis, je rends le message flash et les erreurs de la manière suivante:
<g:if test="${flash.message}">
<br/>
<div class="message" role="status">
<g:message code="${flash.message}" args="${flash.args}" default="${flash.default}"/>
</div>
<br/>
</g:if>
<br/>
<g:renderErrors bean="${SAMLInfoInstance}" as="list" />
Dans mon fichier message.properties, J'ai la ligne suivante:
test.not.created.message=The SP url {1} is not allowed for this account. Please enter a different value.
Quand je lance ce code, le message flash affiche que la chaîne I pas s comme message, c'est-à-dire "test.not.created.message". En outre, cette chaîne est transmise à afficher chaque fois que je navigue vers une autre page qui affiche flash.message. Je suis nouveau aux grails et groovy et apprécierais n'importe quelle aide avec ceci.
Merci!
Cela fonctionne :) Je suis allé de l'avant et résolu mon problème en utilisant le code suivant: 'Obj.errors.rejectValue ('entityId', 'Obj.entityId.clash.not.created.message', [message (code: 'Obj.label', valeur par défaut: 'Obj url'), Obj.entityId] as Object [], 'Cette url Obj n'est pas autorisée pour ce compte. Veuillez entrer une valeur différente.') ' qui utilise la signature de méthode qui peut être trouvée à http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/validation/Errors.html#rejectValue –
tu veux dire? La demande de changement de flash? –
Aussi, si la réponse a été utile, n'hésitez pas à l'accepter. ;) –