留言板
Generating Liferay URL in Velocity template for Web Content Display
Erik Nielsen,修改在11 年前。
Generating Liferay URL in Velocity template for Web Content Display
New Member 帖子: 3 加入日期: 12-6-25 最近的帖子
I would like to be able to use portletURLFactory to create a URL in a velocity template for the Web Content Display portlet. Unfortunately, according to these links, we don't have access to a real HttpServletRequest object here (and it's odd that we have access to portletURLFactory in this case).
Is there any way to get around this without using friendly URLs for any portlets to which you want to link? What I'd like to do (and what doesn't work) is something like:
However, $url will not be populated because the call to create will not work, as far as I understand, because $request is not the real HttpServeletRequest.
Thanks,
Erik
Is there any way to get around this without using friendly URLs for any portlets to which you want to link? What I'd like to do (and what doesn't work) is something like:
#set($plid = $getterUtil.getLong($portalUtil.getPlidFromPortletId($getterUtil.getLong($groupId), "portletName")))
#set($url = $portletURLFactory.create($request, "portletName", $plid, "RENDER_PHASE"))
## set some other parameters on the url
## include the link
However, $url will not be populated because the call to create will not work, as far as I understand, because $request is not the real HttpServeletRequest.
Thanks,
Erik
jelmer kuperus,修改在11 年前。
RE: Generating Liferay URL in Velocity template for Web Content Display (答复)
Liferay Legend 帖子: 1191 加入日期: 10-3-10 最近的帖子
You could use javascript : http://www.liferay.com/web/eduardo.lundgren/blog/-/blogs/liferay-portleturl-in-javascript
Erik Nielsen,修改在11 年前。
RE: Generating Liferay URL in Velocity template for Web Content Display
New Member 帖子: 3 加入日期: 12-6-25 最近的帖子
Jelmer,
Is there a way to ensure that the portlet_url.js file gets included on a page? I know I can configure portlets to include specific JS files, but this isn't included in the page I'm building on which I'm putting the Web Content Display. Otherwise, that looks like a great solution.
Thanks,
Erik
Is there a way to ensure that the portlet_url.js file gets included on a page? I know I can configure portlets to include specific JS files, but this isn't included in the page I'm building on which I'm putting the Web Content Display. Otherwise, that looks like a great solution.
Thanks,
Erik
jelmer kuperus,修改在11 年前。
RE: Generating Liferay URL in Velocity template for Web Content Display (答复)
Liferay Legend 帖子: 1191 加入日期: 10-3-10 最近的帖子
You include the module something like this :
AUI().ready('liferay-portlet-url', function(A) {
... code goes here
});
Erik Nielsen,修改在11 年前。
RE: Generating Liferay URL in Velocity template for Web Content Display
New Member 帖子: 3 加入日期: 12-6-25 最近的帖子
Thanks, that's exactly what I needed.
Erik
Erik
Michel Wicky,修改在11 年前。
RE: Generating Liferay URL in Velocity template for Web Content Display
Regular Member 帖子: 130 加入日期: 10-7-3 最近的帖子
Hello Erik,
Did you got it ?
I cannot achiveve the class initialization, i don't why, may be you will find the reason or let us know about your code so i can compare.
Here is an abstract from the velocity web content template :
#foreach ($userOrganization in $userOrganizations)
#if ($userOrganization.getParentOrganization().getGroupId() == 10698)
#set ($httpRequest = $portalUtil.getHttpServletRequest())
#set ($myPlaceURL = $portletFactoryUtil.create($httpRequest, "49", $userOrganization.getGroup().getDefaultPublicPlid(), "ACTION_PHASE"))
#set ($myPlaceURL2 = $portletFactoryUtil.create($request, "49", $userOrganization.getGroup().getDefaultPublicPlid(), "ACTION_PHASE"))
$userOrganization.getGroup().getDefaultPublicPlid()
$myPlaceURL.toString()
$myPlaceURL2.toString()
## $myPlaceURL.setWindowState("normal")
## $myPlaceURL.setPortletMode("view")
## $myPlaceURL.setParameter("struts_action", "/my_places/view")
## $myPlaceURL.setParameter("groupId", $userOrganization.getGroupId().toString())
## $myPlaceURL.setParameter("privateLayout", "false")
## $myPlaceURL.toString()
<li><a href="${myPlaceURL.toString()}">$userOrganization.Name</a></li>
#set ($matched = $matched + 1)
#end
#end
Thank you
Did you got it ?
I cannot achiveve the class initialization, i don't why, may be you will find the reason or let us know about your code so i can compare.
Here is an abstract from the velocity web content template :
#foreach ($userOrganization in $userOrganizations)
#if ($userOrganization.getParentOrganization().getGroupId() == 10698)
#set ($httpRequest = $portalUtil.getHttpServletRequest())
#set ($myPlaceURL = $portletFactoryUtil.create($httpRequest, "49", $userOrganization.getGroup().getDefaultPublicPlid(), "ACTION_PHASE"))
#set ($myPlaceURL2 = $portletFactoryUtil.create($request, "49", $userOrganization.getGroup().getDefaultPublicPlid(), "ACTION_PHASE"))
$userOrganization.getGroup().getDefaultPublicPlid()
$myPlaceURL.toString()
$myPlaceURL2.toString()
## $myPlaceURL.setWindowState("normal")
## $myPlaceURL.setPortletMode("view")
## $myPlaceURL.setParameter("struts_action", "/my_places/view")
## $myPlaceURL.setParameter("groupId", $userOrganization.getGroupId().toString())
## $myPlaceURL.setParameter("privateLayout", "false")
## $myPlaceURL.toString()
<li><a href="${myPlaceURL.toString()}">$userOrganization.Name</a></li>
#set ($matched = $matched + 1)
#end
#end
Thank you
Tejas Kanani,修改在10 年前。
RE: Generating Liferay URL in Velocity template for Web Content Display
Liferay Master 帖子: 654 加入日期: 09-1-6 最近的帖子
Hi Michel,
Did you find any solution for this ? I am also not able to get HttpRequest in WCM template.
Thanks,
Tejas
Did you find any solution for this ? I am also not able to get HttpRequest in WCM template.
Thanks,
Tejas
Mazhar Alam,修改在10 年前。
RE: Generating Liferay URL in Velocity template for Web Content Display
Regular Member 帖子: 191 加入日期: 11-11-25 最近的帖子
I am also trying to create a sign in url into the webcontent. Still am trying to achieve this by templates and methods posted here.
If anyone have tried this, then do let me know.
Thanks
If anyone have tried this, then do let me know.
Thanks
Aritz Galdos,修改在9 年前。
RE: Generating Liferay URL in Velocity template for Web Content Display
Expert 帖子: 416 加入日期: 07-5-15 最近的帖子
Hi Mazhar Alam
I had the same problem creating a portletURL object from velocity
This is the signature
PortletURLFactory.create(PortletRequest portletRequest, String portletId, long plid, String lifecycle)
Notice that plid requires a long type whereas the class of the $plid object available in velocity is String.
For me, this did the trick
And then use $plidLong as param for PortletURLFactory.create
Hope that helps.
Regards
I had the same problem creating a portletURL object from velocity
This is the signature
PortletURLFactory.create(PortletRequest portletRequest, String portletId, long plid, String lifecycle)
Notice that plid requires a long type whereas the class of the $plid object available in velocity is String.
For me, this did the trick
set($tmp = 0)
#set ($plidLong = $tmp.parseInt($plid))
And then use $plidLong as param for PortletURLFactory.create
Hope that helps.
Regards
Balázs Csönge,修改在8 年前。
RE: Generating Liferay URL in Velocity template for Web Content Display
Regular Member 帖子: 107 加入日期: 14-11-10 最近的帖子
Hi All,
There is no working solution in this tread.
The problem with th PortletURLFactory.create(PortletRequest portletRequest, String portletId, long plid, String lifecycle) method, not really the plid. Yes of course, you must cast it to long with $getterUtil.getLong(), but the real pain the portletRequest input parameter.
Can anybody show a WORKING soluton on liferay 6.2?!
$request is a hashMap, the theme-display in it a hashMap too
$xmlRequest is a string which made from PortletRequest with toXml(method), but I did not find any method to convert it back.
Is any way to get the request in velocity as httpServletRequest or PortletRequest object?!?
I found the following, which is NOT working:
Something else?
There is no working solution in this tread.
The problem with th PortletURLFactory.create(PortletRequest portletRequest, String portletId, long plid, String lifecycle) method, not really the plid. Yes of course, you must cast it to long with $getterUtil.getLong(), but the real pain the portletRequest input parameter.
Can anybody show a WORKING soluton on liferay 6.2?!
$request is a hashMap, the theme-display in it a hashMap too
$xmlRequest is a string which made from PortletRequest with toXml(method), but I did not find any method to convert it back.
Is any way to get the request in velocity as httpServletRequest or PortletRequest object?!?
I found the following, which is NOT working:
#set ($serviceContext = $portal.getClass().forName("com.liferay.portal.service.ServiceContextThreadLocal").getServiceContext())
#set ($httpServletRequest = $serviceContext.getRequest())
Something else?
Sachin Mane,修改在11 年前。
RE: Generating Liferay URL in Velocity template for Web Content Display
Junior Member 帖子: 76 加入日期: 12-4-10 最近的帖子
i believe you will have access to PortletRequest (RenderRequesT) in the template.
You can use PortalUtil.getHttpServletRequest (PortletRequest portletRequest) to get the http request and then use PortletUrlFactory.
You can use PortalUtil.getHttpServletRequest (PortletRequest portletRequest) to get the http request and then use PortletUrlFactory.