2014-01-20 2 views
6

PLAY 프레임 워크 2.2.1을 사용하여 웹 응용 프로그램을 작성하고 요청 된 사이트에 대해 사용 가능한 모든 http get 쿼리 매개 변수를 주소 표시 줄에 표시하려고합니다. 요청에 설정합니다. 모든 http get 매개 변수가 설정되지 않은 경우 기본값으로 설정되지 않은 매개 변수를 추가하고 리디렉션을 만들려고합니다.) (Play Framework : 인수가있는 컨트롤러 메서드로 리디렉션

public static Result test(String q, String w, String f, String o){ 

    ... 

    // In case not all parameters where set 
    if (reload == 1){ 
      return redirect(controllers.Application.test(qDefault, wDefault, fDefault, oDefault)); 
    } 
    else { 
     ok(...); 
    } 
} 

문제가 리디렉션입니다 : 여기

GET /test controllers.Application.test(q:String, w:String ?= null, f:String ?= null, o:String ?= null) 

내가 controllers.Application에 가지고 싶은 방법 :

나는 GET으로 요청 할 수있는 사이트를 Result 객체가 아닌 String을 취합니다.

나의 첫 번째 솔루션은

return controllers.Application.test(qDefault, wDefault, fDefault, oDefault); 

를 작성하지만 불행하게도 ADRESS 줄이 업데이트되지 않습니다이다.

내 두 번째 솔루션은 수동으로 문자열을 구축하는 것입니다 :

return redirect("/test?q=" + query + "&f=" + f + "&w=" + w + "&o=" + showOptions); 

이 잘 작동하지만 다른 방법이 작업을 수행하는 더 우아한 방법이 없다?

답변

8

routes 객체를 사용

public static Result index() { 
    return redirect(controllers.routes.Application.test(qDefault, wDefault, fDefault, oDefault)); 
} 

출처 : 또한이 또한 유효 Official Documentation

1

public static Result index() { 
    return redirect("path"); 
}