Проверка Grails: renderErrors не появляется после formRemote - PullRequest
0 голосов
/ 13 октября 2011

Это в gsp

<g:if test="${hasError}">
    <div class="errors">
        <g:renderErrors bean="${eventInstance}" />
    </div>
</g:if>
<g:else >
    <div id="messageBox" class="message" style="display:none;">
        <g:message code="legalevent.save.success" args="[entityName]" default="Event saved successfully" />
    </div>
</g:else>
<g:formRemote name="eventForm" id="eventForm" url="[controller : 'search', action : 'saveLegalEvent']"  
                  update="eventFormDiv" action="${createLink(controller: 'search', action: 'saveLegalEvent')}" method="POST"
                  onSuccess="jQuery('#messageBox').show()">

Я отображаю страницу для обновления с этим:

def saveLegalEvent = {

    def paramsView = params
    def eventPattern = /(event\.).*/
    def event = LegalEvent.findByLevId(params["levId"])
    def corrTxt = params["corrTxt"] as CorrectionText
    if(corrTxt.getCorrId()){
        corrTxt = CorrectionText.findByCorrId(corrTxt.getCorrId())
    }
    event.setCorrTxt(corrTxt)
    event.properties = params["event"] 
    def dataList = []
    def hasError = false
    def validated = event.validate()
    validated &= event.validateHistoryParams()
    if(validated)
        event.save(flush:true)
    else 
        hasError = true
    def errorsView = event.errors
    render(view:'leform', model:[attributeDataInstanceList:event.tags, lecInstance:event.leCode, eventInstance:event, hasError: hasError])
}

validateHistoryParams проверяет еще несколько параметров, которые обычно не нужны в классе домена.

def validateHistoryParams = { ->
    if(!changeRef || !changeRef.trim()) {
        this.errors.rejectValue('changeRef', 'event.changeRef.blank')
    }
    if(!corrTxt || !(corrTxt.corrTxt.trim() || corrTxt.corrId )) {
        this.errors.rejectValue('corrTxt', 'event.corrTxt.null')
    }

    !(this.hasErrors())
}

Проблема со всем этим в том, что ошибки не отображаются в gsp. Все остальные теги отображаются нормально, при отладке я вижу, что ошибки на самом деле находятся в стеке ошибок. Но в конце тег не отображает их.

Как видите, перенаправления нет, поэтому я не могу понять, почему ошибки как-то стираются между созданием ответа и рендерингом ...

1 Ответ

0 голосов
/ 14 октября 2011

В вашем коде Groovy возвращаемый параметр называется hasError, а GSP проверяет наличие hasErrors.Я бы порекомендовал не использовать дополнительные переменные, а просто запросить сам бин в GSP.

Я также считаю, что вам нужно иметь эти ошибки div внутри элемента formRemote, чтобы-отдача после отправки формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...