2011-12-07 3 views
1

VM 템플릿의 URI에 전달 된 GET 변수에 어떻게 액세스합니까? 위젯 URL을로드 할 때에만 작동Velocity (VM) 템플릿 요청 매개 변수 : GET 변수 받기

: 나는 친화적 인 URL을 작동하는 깔끔한 해결책을 찾고 있어요

$request.get("parameters").get("fav").get(0) 

.

<br><br><br> 
#set($url = $request.attributes.CURRENT_URL) 

<h2>url: $url</h2> 

#set($favs = $url.split("fav=")) 
favs: $favs<br> 
favs.size(): $favs.size() <br> 
#if($favs.size() > 1) 
    #set($fav1 = $favs.get(1).split("&").get(0)) 
    fav1: $fav1<br> 
#else 
    No fav! 
#end 
#if($favs.size() > 2) 
    #set($fav2 = $favs.get(2).split("&").get(0)) 
    fav2: $fav2<br> 
#end 

#set($favs2 = $httpUtil.getParameterMap($url, "fav")) 
favs2: $favs2 

<hr> 
<h3>Fav?</h3> 
<form method="get"> 
    <input type="checkbox" name="fav" value="dave"/> Dave<br> 
    <input type="checkbox" name="fav" value="nate"/> Nate<br> 
    <input type="checkbox" name="fav" value="taylor"/> Taylor<br> 
    <input type="submit" value="Send"/> 
</form> 
<hr> 
<div style="font-size: 9px;">request: $request</div> 

답변

5

또 다른 옵션은 $를 사용하는 것 httpUtil은 Velocity 템플릿에 삽입 된 Liferay 유틸리티 클래스입니다. 이 다음 할 수있는 방법 :

#set($url = $request.attributes.CURRENT_URL) 
#set($singleValue = $httpUtil.getParameter($url, "foo", false)) 
#set($multipleValues = $httpUtil.getParameterMap($httpUtil.getQueryString($url)).foo) 
+0

니스와 간단한,하지만 어떻게 내가 같은 이름의 두 번째 매개 변수를 얻을 것? –

+1

다음과 같이 특정 매개 변수의 값 목록을 얻을 수 있습니다 :'#set ($ vals = $ httpUtil.getParameterMap ($ url) .foo)' –

+0

불행히도, 그 중 하나는 작동하지 않습니다; 그것은 2 대신 크기 1의 문자열 목록을 반환합니다. –

2

내가 끔찍한 설명서의 가정 해결책을 찾을 수 없습니다, 그래서 난이 함께했다 :

가 여기 내 테스트 템플릿의

#set($curl = $request.get("attributes").get("CURRENT_URL")) 
#set($foo = $curl.split("foo=")) 
<hr> 
#if($foo.size() > 1) 
    #set($foo1 = $foo.get(1).split("&").get(0)) 
    foo1: $foo1 
#end 
<hr> 
#if($foo.size() > 2) 
    #set($foo2 = $foo.get(2).split("&").get(0)) 
    foo2: $foo2 
#end 
<hr> 
0

$ request.getParameter ("경우 ParameterName")