如何在grails控制器的hasErrors()方法中省略字段验证

时间:2017-04-14 21:14:36

标签: grails grails-2.0 grails-controller

我使用的是grails 2.4.2版本。我有一个域类,我有一个另一个域类对象的字段。当我为我的域生成视图时,它会为该类对象创建一个选择框。我评论了选择框并将id从视图传递给控制器​​。在控制器中我试图通过grails的domain.get()方法添加类对象。但是对于控制器中的hasErrors()方法,它始终显示验证问题,并在不保存的情况下重定向错误。如果我评论hasErrors()然后它保存正确。但我需要使用hasErrors()进行其他字段验证。有人可以帮我吗?以下是我的代码:

我的域名>>>

    class ThanaAgent {

    String agentName
    DistrictAgent districtAgent

    ...
}

我的控制器保存方法>>>

@Transactional
def save(ThanaAgent thanaAgentInstance) {

    if (thanaAgentInstance == null) {
        notFound()
        return
    }

    DistrictAgent districtAgent = DistrictAgent.get(Long.parseLong(params.districtAgentId))
    thanaAgentInstance.districtAgent = districtAgent

    if (thanaAgentInstance.hasErrors()) {
        respond thanaAgentInstance.errors, view: 'create'
        return
    }

    thanaAgentInstance.save flush: true

    request.withFormat {
        form multipartForm {
            flash.message = message(code: 'default.created.message', args: [message(code: 'thanaAgent.label', default: 'ThanaAgent'), thanaAgentInstance.id])
            redirect thanaAgentInstance
        }
        '*' { respond thanaAgentInstance, [status: CREATED] }
    }
}

这里我将对象分配为districtAgent。

在我看来,而不是选择>>>

<div class="form-group">
        <label>District Agent</label>
        ...
        <g:hiddenField name="districtAgentId" id="districtAgentId"
                       value="1"/>
        %{--<g:select id="districtAgent" name="districtAgent.id" from="${book.DistrictAgent.list()}" optionKey="id" required="" value="${thanaAgentInstance?.districtAgent?.id}" class="form-control"/>--}%
    </div>

1 个答案:

答案 0 :(得分:0)

哦,这很简单。只需将字段名称编辑为选择框,如下所示:

<g:hiddenField name="districtAgent.id" id="districtAgent"
                       value="${thanaAgentInstance?.districtAgent?.id}"/>