2015-01-26 8 views
0

Grails 2.4.2를 RestfulController와 함께 사용하고 있으며이 컨트롤러는 PagingRestfulController를 사용합니다.Grails 2.4.2 컨트롤러에서 잘못된 액션을 호출하는 URL 매핑

"/ product/search"에서 GET을 할 때 제품 컨트롤러에서 searchProducts 작업을 실행하려고하지만 queryForResource를 실행 중입니다.

Grails는 "/ product"(resources : 'product') URL 매핑을 사용하여 listAllResources 및 queryForResource를 생성했습니다. 아래는 URL 맵핑과 제품 컨트롤러의 해당 부분입니다. 검색 작업을 호출하려면 어떻게해야합니까?

URL 매핑

"/product"(resources:'product') 
"/product/search"(controller: 'product'){ 
    action = [GET: 'searchProducts'] 
} 

제품 컨트롤러

protected List<Product> searchProducts(Map params) { 
    log.debug("searching products..."); 
} 

protected List<Product> listAllResources(Map params) { 
    log.debug("listing all resources..."); 
} 

protected List<Product> queryForResource(Serializable id) { 
    log.debug("querying for resources..."); 
} 

답변

0

당신은 다음과 같이 보일 수있는 컨트롤러에 공개 search 작업을 정의해야합니다

def search() { 
    searchProducts(params) 
} 

보호 된 listAllResourcesqueryForResource 메서드는 RestfulController에 정의 된 도우미 메서드를 재정의하지만 노출 된 컨트롤러 작업으로 제공되지 않습니다.

그런 다음이 중첩 된 매핑 사용

"/product"(resources:'product') { 
    "/search"(controller: 'product', action: 'search', method: 'GET') 
} 
+0

그것은 여전히 ​​queryForResource –

+0

를 실행의 대답 –

+0

앤드류 편집 참조를, 당신의 도움을 주셔서 감사합니다, 그것은 여전히 ​​queryForResource –