在开始标记中指定plid并将其作为Liferay中的参数传递之间的区别

时间:2014-12-16 14:00:36

标签: java url liferay portlet

创建portlet url时在开始标记中指定plid有什么区别

<liferay-portlet:renderURL var="myurl" windowState="normal" plid="123456"> <liferay-portlet:param name="struts.portlet.action" value='/view/myAction' /> </liferay-portlet:renderURL>

并将其作为参数传递

<liferay-portlet:renderURL var="myurl" windowState="normal"> <liferay-portlet:param name="struts.portlet.action" value='/view/myAction' /> <liferay-portlet:param name="plid" value='123456' /> </liferay-portlet:renderURL>

当plid不存在时,我得到不同的错误消息,所以我在徘徊,差异是什么

2 个答案:

答案 0 :(得分:2)

  

问:创建portlet网址时在开始标记中指定plid并将其作为参数传递有什么区别

主要区别在于:

  • 对于 tag-attribute-plid ,它会检查plid并相应地更改该布局(页面)的URL。
  • request-param-plid 它只会将其附加到您的URL(作为查询字符串),并具有与其他请求参数一样的正确名称空间。没什么特别的。

现在举个例子

如果my-portlet内的 tag-attribute-plid 使用如下:

<liferay-portlet:renderURL var="myurl" windowState="normal" plid="123456">
    <liferay-portlet:param name="struts.portlet.action" value='/view/myAction' />
</liferay-portlet:renderURL>

如果要在page-x上构建URL以转到另一个页面-y。假设您在页面上:Home并且您要转到Help页面或Control Panel,然后在plid属性中通过pild Help的{​​{1}}页面或plid

因此,如果我传递控制面板的plid,那么最终的URL将类似于:

  

http://mylocalhost.com /组/ CONTROL_PANEL /管理 p_p_auth = 1g0RGj4L&安培; p_p_id = my_WAR_myportlet&安培; p_p_lifecycle = 0&安培; p_p_state =正常&安培; p_p_mode =视图&安培; _my_WAR_myportlet_struts.portlet.action =%2Fview %2FmyAction


通过将Control Panel作为请求参数传递,无法实现上述目标。


  

问:当plid不存在时,我收到不同的错误消息,所以我在徘徊,差异是什么

现在您知道区别的是什么,所以可能很容易回答这个问题。 如果 tag-attribute-plid 不正确,则会创建如下所示的网址:

  

http://mylocalhost.com / c / portal / layout?p_l_id = 123456 &amp; p_p_auth .....

如果 request-param-plid 不正确,它会为当前页面创建一个URL并附加plid,如下所示:

  

http://mylocalhost.com /网络/客体/家 p_p_id = my_WAR_myportlet&安培; p_p_lifecycle = 0&安培; p_p_state =正常&安培; p_p_mode =视图&安培; _my_WAR_myportlet_struts.portlet.action =%2Fview%2FmyAction&安培; <强> _my_WAR_myportlet_plid = 123456

希望这有帮助。

答案 1 :(得分:0)

在创建portlet URL时,在开始标记中指定plid和作为请求参数附加有什么区别?

  

plid as tag-attribute:有两个确定性,如果有任何布局(页面)   对于给定的plid,可以在门户网站上找到,然后它将创建特定于的URL   该页面,否则plid将作为queryString参数附加。

     

plid as request-parameter:在任何一种情况下(正确/错误的plid),   plid将作为queryString参数附加到当前布局   具有portlet的适当命名空间的URL,可以从中提取   请求对象。

当plid不存在时,我会收到不同的错误消息。

  

是的,如果您的门户网站中没有找到任何布局/页面,您肯定会得到   给定的。

所以我在徘徊不同之处。

  

唯一的区别可能是之前在case-1中搜索布局   在标记创建renderURL时将其附加到URL。在案例-2中,plid只是传递了一个   请求对象,可在portlet操作中访问。