2011-12-07 20 views
1

VMテンプレートのURIに渡されたGET変数にどのようにアクセスできますか?Velocity(VM)テンプレートリクエストパラメータ:GET変数の取得

ウィジェットのURLをロードするときにのみ動作します:

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

私は友好的なURLで動作きちんと解決策を探しています。ここで

は私のテストのテンプレートです:

<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

ニースとシンプルですが、どのようにiは、同じ名前の2番目のパラメータになるだろうか? –

+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が」)