创建 portlet url 时在开始标记中指定 pld 有何区别
<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不存在时,我收到不同的错误消息,所以我想知道其中的区别是什么
最佳答案
Q: What is the difference between specifying the plid in the opening tag when creating a portlet url and passing it as a param
主要区别是:
- 对于 tag-attribute-plid,它将检查 pld 并相应地更改该布局(页面)的 URL。
- 对于 request-param-plid ,它会简单地将其附加到您的 URL(作为查询字符串),并像其他请求参数一样使用适当的命名空间。没什么特别的。
现在是一个例子
如果tag-attribute-plid在您的my-portlet
中使用如下:
<liferay-portlet:renderURL var="myurl" windowState="normal" plid="123456">
<liferay-portlet:param name="struts.portlet.action" value='/view/myAction' />
</liferay-portlet:renderURL>
当你想在第 x 页上构造一个 URL 来转到另一个第 y 页时。假设您位于主页
页面,并且想要转到帮助
页面或控制面板
,然后在plid
属性,您可以传递帮助
页面的pild
或控制面板
的plid
。
因此,如果我传递控制面板的 pld,那么最终的 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
作为请求参数传递无法实现上述目标。
Q: I get different error messages when the plid doesn't exist so I was wandering what the difference was
现在您知道区别是什么了,所以回答这个问题可能很容易。 如果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
希望这有帮助。
关于java - 在开始标签中指定plid与在Liferay中将其作为参数传递之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27506355/