Liferay portlet param传递给不同的portlet

时间:2012-06-20 17:34:27

标签: parameters liferay portlet param

所以我整天都用Google搜索,得到的答案很少,但都失败了。更不用说所有解决方案都是> 3岁。我正在使用LR 6.1 CE。非常感谢简单的工作示例,因为其他答案总是让我失去价值。

3 个答案:

答案 0 :(得分:4)

有2-3种方法可以做到这一点,但试试这个。

portletSession获取portletRequest。使用setAttribute()方法和3个参数。第三个参数应为PortletSession.APPLICATION_SCOPE

从portlet会话中获取第二个portlet的值。使用相同的APPLICATION_SCOPE来获取它。

修改

您还需要在false中将以下代码的值设为liferay-portlet.xml以共享参数

<private-request-attributes>false</private-request-attributes>
<private-session-attributes>false</private-session-attributes>

您可以在DTD

中详细了解这些参数

答案 1 :(得分:1)

此代码从其他portlet调用Action并发送2个参数

你可以使用:

liferay-portlet:renderURL
liferay-portlet:actionURL

<liferay-portlet:actionURL name="addWallEntry" plid="<%= portletId2 %>" portletName="3_WAR_socialnetworkingportlet" var="shareUrl">
<portlet:param name="redirect" value="<%= viewFolderURL.toString() %>" />
<portlet:param name="comments" value="<%= shareMessage %>" />

 </liferay-portlet:actionURL>

<liferay-ui:icon image="share" url="<%= shareUrl %>"/>

你必须知道的概念     plid:引用的页面布局ID     portletName:引用的portlet名称

renderURL和actionURL是Liferay提供的扩展标准tld的标签。注意:这种通信不是portlet JSR168和JSR286标准的一部分。

plid是我们部署一个portlet的页面的id,我们可以使用LayOutLocalService来寻找id,或直接在数据库中查询它。

portletName是portlet的标识符,是portlet的部署描述符的一部分。此id由portletId + WAR + thenameofwarthatencapsulatestheportlet和 INSTANCE 组成,如果portlet是可实现的。

答案 2 :(得分:0)

我附上了一个带有请求和会话属性的简单liferay-portlet.xml的演示。

<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.1.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_1_0.dtd">

<liferay-portlet-app>
    <portlet>
        <portlet-name>testRedirect</portlet-name>
        <icon>/icon.png</icon>
        <instanceable>false</instanceable>
        <private-request-attributes>false</private-request-attributes>
        <private-session-attributes>false</private-session-attributes>
        <header-portlet-css>/css/main.css</header-portlet-css>
        <footer-portlet-javascript>/js/main.js</footer-portlet-javascript>
        <css-class-wrapper>testRedirect-portlet</css-class-wrapper>
    </portlet>
    <role-mapper>
        <role-name>administrator</role-name>
        <role-link>Administrator</role-link>
    </role-mapper>
    <role-mapper>
        <role-name>guest</role-name>
        <role-link>Guest</role-link>
    </role-mapper>
    <role-mapper>
        <role-name>power-user</role-name>
        <role-link>Power User</role-link>
    </role-mapper>
    <role-mapper>
        <role-name>user</role-name>
        <role-link>User</role-link>
    </role-mapper>
</liferay-portlet-app>