Grails在同一gsp中使用命令对象和对象
我有一个控制器,编辑方法在表单文件中绘制用户信息。但是 当我试图用错误更新命令对象时,命令对象返回userCommand对象,因此我丢失了用户对象的所有信息 有没有办法以相同的形式使用两者?或者我在这里错过了什么 用户控制器类Grails在同一gsp中使用命令对象和对象,grails,gsp,grails-controller,command-objects,Grails,Gsp,Grails Controller,Command Objects,我有一个控制器,编辑方法在表单文件中绘制用户信息。但是 当我试图用错误更新命令对象时,命令对象返回userCommand对象,因此我丢失了用户对象的所有信息 有没有办法以相同的形式使用两者?或者我在这里错过了什么 用户控制器类 class UserController { def edit(User user) { respond user } def update(UserCommand userCommand) { log.debug
class UserController {
def edit(User user) {
respond user
}
def update(UserCommand userCommand) {
log.debug "Update a User"
if (userCommand.hasErrors()) {
respond userCommand.errors, view: 'edit'
return
}
}
}
_form.gsp文件
<g:form action="update">
<div class="form-group">
<label for="firstName">User First Name</label>
<input class="form-control" name="firstName" value="${user?.firstName}">
</div>
<div class="form-group">
<label for="lastName">User Last Name</label>
<input class="form-control" name="lastName" value="${user?.lastName}">
</div>
</g:form>
用户名
用户姓氏
您应该在两个actions参数上使用
UserCommand
,并通过数据绑定
从UserCommand在action中创建用户对象。这是为了将视图模型与实际模型分开
与其他用户一样,返回整个UserCommand
,而不是UserCommand.errors
。您可以访问视图中的UserCommand.errors
请记住,在UserCommand有效之后,仍然需要创建用户并验证它,并返回它所存在的任何错误。例如,这两种方法都可以通过
运行。谢谢你@tuomas valtonen。你驱使我找到解决办法
def edit(User user) {
UserCommand userCommand = new UserCommand()
bindData(userCommand, user)
respond userCommand
}
您是否尝试仅响应userCommand而不是userCommand。错误?是的,我响应了。相同的结果hh:)而不是用户?.firstName尝试使用userCommand?.firstName