Grails验证:formRemote后渲染器未拾取

Grails验证:formRemote后渲染器未拾取,grails,tags,Grails,Tags,这是普惠制 <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: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()">
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中没有呈现错误。 所有其他标记都呈现良好,调试时我可以看到错误实际上在错误堆栈中。但最终,标记不会呈现它们


如您所见,没有重定向,因此我无法理解为什么在响应创建和呈现之间会以某种方式删除错误…

在Groovy代码中,返回的参数名为
hasError
,GSP检查
hasErrors
。我建议不要使用额外的变量,只在GSP中查询bean本身


我还认为,您需要在formRemote元素中设置errors div,以便在提交表单后重新渲染。

首先感谢您的回答。我尝试了hasError和NothingHasError,还更改了参数的名称,但都没有成功。这里有hasError参数,因为如果bean没有错误(“更新成功”或其他内容),我希望显示一条通用消息。我还用bean上的标记直接测试了它,但它不起作用;博士在控制器闭包的末尾,bean在erros arraylist中有错误。在gsp中,不会显示bean错误,使用hasError标记时会将bean视为没有错误。如果呈现
${eventInstance.hasErrors()}
,该怎么办?
eventFormDiv
是否丢失了整个引用的GSP?实际上,在我测试时,错误已经显示了一到两次(完全随机)。如果${hasError(bean:eventInstance字段:property)}返回true,将显示css类错误。问题是,当gsp被呈现时,错误会以某种方式消失。我想的是,当它在错误上迭代时,不知何故会出现一个未捕获的异常,它的行为就像没有异常一样……也许我应该复制renderError和hasError标记,并亲自将它们首次显示出来?
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())
}