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



创建组件 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 不存在时,我收到不同的错误消息,所以我在徘徊有什么区别

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

主要区别在于:

  • 对于标签属性 PLID,它将检查 plid 并相应地更改该布局(页面(的 URL。
  • 对于请求参数,它只会像其他请求参数一样,使用适当的命名空间将其附加到您的 URL(作为查询字符串(。没什么特别的。

现在举个例子

如果在my-portlet中按如下方式使用标签属性 plid

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

当您想在页面 x 上构造一个 URL 以转到另一个页面时。假设您在页面:Home,并且您想转到Help页面或Control Panel,然后在 plid 属性中,您将传递Help页面的pildControl Panelplid

因此,如果我传递控制面板的 plid,那么最终 URL 将如下所示:

http://mylocalhost.com/group/control_panel/manage?p_p_auth=1g0RGj4L&p_p_id=my_WAR_myportlet&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&_my_WAR_myportlet_struts.portlet.action=%2Fview%2FmyAction


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


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

现在您知道区别是什么,因此可能很容易回答这个问题。如果 tag-attribute-plid不正确,它将创建一个如下所示的 URL:

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

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

http://mylocalhost.com/web/guest/home?p_p_id=my_WAR_myportlet&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&_my_WAR_myportlet_struts.portlet.action=%2Fview%2FmyAction&_my_WAR_myportlet_plid=123456

希望这有帮助。

创建 portlet URL 时指定起始标记中的 plid 和追加为请求参数有什么区别?

plid作为标签属性:有两个确定性,如果有布局(页面(对于在门户上找到给定的 PLID,它将创建特定于该页面,否则 plid 将作为 queryString 参数追加。

plid 作为请求参数:在任何一种情况下(正确/不正确的 plid(,plid 将作为查询字符串参数附加到当前布局中具有 Portlet 的正确命名空间的 URL,可以从中提取请求对象。

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

是的,

当然你会得到,如果你的门户中没有找到任何布局/页面给定的 plid。

所以我在徘徊有什么区别。

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

最新更新