Ошибка проверки Grails из метода обслуживания - PullRequest
1 голос
/ 18 июня 2011

У меня есть метод в классе обслуживания, который создает объект:

def createContent (fileName, description) {

    def content = new Content(
        fileName:fileName,
        description:description,
    ).save()
}

Ни одно из этих свойств не имеет значения NULL.Как я могу передать ошибки проверки обратно для отображения?Я пробовал flash.message и render, оба из которых не работают из классов обслуживания.Я также попытался .save (failOnError: true), который отображал длинный список ошибок.

1 Ответ

5 голосов
/ 05 августа 2011

Упрощая все это должно выглядеть так.

Способ обслуживания:

def createContent (fileName, description) {
    //creating an object to save
    def content = new Content(
        fileName:fileName,
        description:description,
    )

    //saving the object
    //if saved then savedContent is saved domain with generated id
    //if not saved then savedContent is null and content has validation information inside
    def savedContent = content.save()

    if (savedContent != null) {
        return savedContent
    } else {
        return content
    }
}

Сейчас в контроллере:

def someAction = {
    ...
    def content = someService.createContent (fileName, description)
    if (content.hasErrors()) {
        //not saved
        //render create page once again and use content object to render errors
        render(view:'someAction', model:[content:content])
    } else {
        //saved
        //redirect to show page or something
        redirect(action:'show', model:[id:content.id])
    }
}

И someAction.gsp:

<g:hasErrors bean="${content}">
   <g:renderErrors bean="${content}" as="list" />
</g:hasErrors>

И вообще вы должны просмотреть это: Документ для проверки Grails

...