【发布时间】:2023-03-12 16:12:01
【问题描述】:
我在控制器中有以下操作
class RegisterController {
static allowedMethods = [register: 'POST']
def register(User user) {
// action body omitted
}
}
如果用户尝试通过GET /register/register/newUser 调用此操作,我会遇到数据绑定失败,因为newUser 无法绑定到用户的Long id 属性。
起初这似乎是合理的,但是当通过 HTTP GET 调用 user 时,IMO 不应尝试绑定它,因为我已声明只允许 POST。
奇怪的是,如果我将操作更改为:
class RegisterController {
static allowedMethods = [register: 'POST']
def register() {
User user = new User(params)
}
}
然后再次尝试使用GET /register/register/newUser 调用它,然后我得到预期的 HTTP 方法不允许 (405) 错误。在我看来,数据绑定是在检查 HTTP 请求类型之前发生的,这就是为什么我在第一种情况下收到绑定错误,在第二种情况下收到 405 错误。
我不应该在这两种情况下都得到 405 吗?
【问题讨论】:
标签: grails data-binding