Liferay Velocity(VM)模板请求参数:获取变量
如何访问VM模板中URI中传递的变量 这仅在加载小部件URL时有效: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(
$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")