Liferay Velocity(VM)模板请求参数:获取变量

Liferay Velocity(VM)模板请求参数:获取变量,liferay,velocity,vtl,liferay-velocity,Liferay,Velocity,Vtl,Liferay Velocity,如何访问VM模板中URI中传递的变量 这仅在加载小部件URL时有效: $request.get(“参数”).get(“fav”).get(0) 我正在寻找一个简洁的解决方案,与友好的网址工作 这是我的测试模板: #设置($url=$request.attributes.CURRENT\uURL) url:$url #set($favs=$url.split(“fav=”)) FAV:$FAV favs.size():$favs.size() #如果($favs.size()>1) #set(

如何访问VM模板中URI中传递的变量

这仅在加载小部件URL时有效:

$request.get(“参数”).get(“fav”).get(0)
我正在寻找一个简洁的解决方案,与友好的网址工作

这是我的测试模板:




#设置($url=$request.attributes.CURRENT\uURL) url:$url #set($favs=$url.split(“fav=”)) FAV:$FAV
favs.size():$favs.size()
#如果($favs.size()>1) #set($fav1=$favs.get(1.split(“&”).get(0)) fav1:$fav1
#否则 不喜欢! #结束 #如果($favs.size()>2) #set($fav2=$favs.get(2.split(“&”).get(0)) fav2:$fav2
#结束 #set($favs2=$httpUtil.getParameterMap($url,“fav”)) favs2:$favs2
最爱? 戴夫
内特
泰勒

请求:$request
我在糟糕的文档中找不到假定的解决方案,因此我提出了以下建议:

#set($curl=$request.get(“属性”).get(“当前URL”))
#set($foo=$curl.split(“foo=”))

#如果($foo.size()>1) #set($foo1=$foo.get(1.split(“&”).get(0)) foo1:$foo1 #结束
#如果($foo.size()>2) #set($foo2=$foo.get(2.split(“&”).get(0)) foo2:$foo2 #结束

另一个选项是使用$httpUtil,这是一个注入Velocity模板中的Liferay实用程序类。通过这种方式,您可以执行以下操作:

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

很简单,但是如何获取同名的第二个参数呢?您可以执行以下操作来获取某个参数的值列表:
#set($vals=$httpUtil.getParameterMap($url.foo)
,不幸的是,这也不起作用;它返回大小为1而不是2的字符串列表。很抱歉,我犯了一个错误
getParameterMap
只需要查询字符串作为参数,而不需要整个URL。因此,当您这样做时,它应该可以工作:
$httpUtil.getParameterMap($httpUtil.getQueryString($url)).foo
当参数总是附加在url中时(比方说使用不同的值),它工作得很好。因此,最好首先通过检查空/真/假可能值来评估它。
$request.getParameter("parameterName")