だから私は一日中グーグルで検索しましたが、これを行う方法の答えはほとんどなく、すべて失敗しました。言うまでもなく、すべてのソリューションは 3 年以上前のものです。LR6.1CEを使用しています。他の答えは常に私をnull値にしたので、簡単な実例に感謝します。
3 に答える
やり方は2~3通りありますが、これをやってみてください。
portletSession
から を取得しportletRequest
ます。setAttribute()
3 つのパラメータを持つメソッドを使用します。3 番目のパラメーターは である必要がありますPortletSession.APPLICATION_SCOPE
。
ポートレット セッションから 2 番目のポートレットから値を取得します。同じものを使用しAPPLICATION_SCOPE
て取得します。
編集:
また、パラメーターを共有するfalse
には、次のタグの値を次のようにする必要がありますliferay-portlet.xml
<private-request-attributes>false</private-request-attributes>
<private-session-attributes>false</private-session-attributes>
これらのパラメーターの詳細については、DTDを参照してください。
このコードは、他のポートレットからアクションを呼び出し、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: 参照されるポートレット名の概念を理解する必要があります。
renderURL と actionURL は、標準の tld を拡張する Liferay によって提供されるタグです。注: この種の通信は、ポートレット JSR168 および JSR286 の標準の一部ではありません。
plid は、1 つのポートレットをデプロイするページの ID です。LayOutLocalService を使用して ID を検索するか、データベースで直接クエリを実行できます。
portletName はポートレットの識別子であり、ポートレットのデプロイメント記述子の一部です。この ID は、portletId + WAR + ポートレットをカプセル化する war の名前と、ポートレットがインスタンス化可能な場合はオプションのINSTANCEで構成されます。
request 属性と session 属性を含む単純な 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>