2012-10-03 2 views
0

그래서이 컨트롤러는 리셋 (일부 데이터 지우기), 인덱스 및 다른 방법을 사용하므로 리셋 메서드가 끝날 때 인덱스 메서드로 리디렉션됩니다. 의 차이점은 무엇 :.Grails 리디렉션 작업 인덱스

redirect(action: "index", id: params.id) 

redirect(action: index, id: params.id) 

첫 번째 인덱스 방법으로 저를 리디렉션하지만, 두 번째는 다른 방법에 나를 리디렉션, 완벽하게 작동을 (getEndMonthsList controlller의 마지막 방법입니다)

+1

Grails의 버전은 무엇입니까? –

+0

grails의 버전 : Grails 2.0.0 – ciker001

답변

0

첫 번째 경우 Grails는 컨트롤러 메소드를 이름으로 호출합니다. 두 번째 경우 Grails는 클로저 이름을 가져오고 컨트롤러 메서드를 이름으로 호출합니다.

org.codehaus.groovy.grails.web.metaclass.RedirectDynamicMethod#establishActionName

2

를 참조하면 유효하다 보여준 두 가지 변종에만 폐쇄 조치를 정의하는 데 사용 될 수 있기 때문에 Grails는이 전. 따라서 두 번째 방법으로 클로저 속성을 참조 했으므로 'index'또는 index으로 리디렉션 할 수 있으며 Grails는 이름에서 전체 URL을 작성합니다. 약간 느리므로 문자열 접근 방식을 사용하는 것이 항상 더 좋습니다.

2.0에서 변경된 사항과 메소드가 조치로 사용되도록 허용되어 선호되는 접근 방식입니다. 따라서 index 메서드가있는 경우 더 이상 다른 변수와 마찬가지로 참조 할 수있는 클래스의 공용 필드가 아니며 직접 이름으로 참조 할 수없는 메서드입니다. 따라서 스트링 방식 만이 효과가 있습니다.

비 문자열 접근 방식을 사용하여이를 재현하려고 시도했지만 설명대로 실패하지 않았습니다. 인덱스 동작이 (예상대로) 메서드로 정의되고 잘 처리되면 누락 된 속성 예외가 발생하여 실패합니다 그것이 종결 자 (다시, 예상대로)로 정의되었을 때.

관련 문제