2014-07-15 2 views
2

I이 사용자가 GET /register/register/newUser를 통해이 작업을 호출하려고하면 newUser가 사용자의 Long id 속성에 바인딩 할 수 없기 때문에 Grails의 데이터 바인딩 및 허용되는 HTTP 방법

class RegisterController { 

    static allowedMethods = [register: 'POST'] 

    def register(User user) { 
     // action body omitted 
    } 
} 

, 나는 데이터 바인딩 실패를 얻을

컨트롤러에서 다음 작업을 .

처음에는 합리적인 것처럼 보이지만, IMOG에서는 HTTP GET을 통해 호출 할 때 user을 바인딩 할 때 아무런 시도도하지 않아야합니다. POST 만 허용한다고 선언했기 때문입니다. 내가 할 작업을 변경하는 경우

이상하게 :

class RegisterController { 

    static allowedMethods = [register: 'POST'] 

    def register() { 
     User user = new User(params) 
    } 
} 

다시 GET /register/register/newUser 그것을 호출하려고, 그때 (405) 오류가 허용되지 예상되는 HTTP 방법을 얻을. 그것은 나에게 데이터 요청 HTTP 요청 유형을 확인하기 전에 일어나는 것, 그리고 이것이 내가 첫 번째 경우에는 바인딩 오류를 얻고 두 번째는 405 오류가 발생하는 것입니다.

두 경우 모두 405를 받아야하지 않습니까?

답변

0

예, 두 경우 모두 405를 받아야합니다. https://jira.grails.org/browse/GRAILS에 신고하십시오. 곧 바로 처리해 드리겠습니다. 명령 객체 처리 코드를 추가하고 allowedMethods 처리 코드를 추가하는 AST 변환이 있습니다. 올바른 순서가 아닐 수도 있습니다. 그것을 바로 잡을 것입니다. 의견을 보내 주셔서 감사합니다.

+0

JIRA 파일을 작성 하시려면 사용중인 Grails 버전을 알려주십시오. 방금 샘플 2.4.2를 https://github.com/jeffbrown/allowedmethodsproblem에 만들었고 RegisterControllerSpec에 405가 예상대로 반환되는 것으로 나타났습니다. 도와 줘서 고마워. –

+0

2.4.2 앱을 사용하면 405가 전송되기 전에 데이터 바인딩이 계속 발생하므로 개선되어야하지만 405가 전송된다는 점에 유의하십시오. 그것은 일어나지 않고있는 당신의 경우에 소리가 나는다. 그리고 나는 그것이 왜 있는지 핀으로 고정시키고 싶다. –

+0

Grails 2.4.0에서이 문제점을 관찰했습니다. –