我使用的是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>
答案 0 :(得分:0)
哦,这很简单。只需将字段名称编辑为选择框,如下所示:
<g:hiddenField name="districtAgent.id" id="districtAgent"
value="${thanaAgentInstance?.districtAgent?.id}"/>