当前位置: 首页 > 知识库问答 >
问题:

需要帮助共享portlet会话数据

宓英哲
2023-03-14

实际上,我正在尝试在2个不同的插件项目中的2个portlet之间共享数据

以下是我分享数据的步骤:

步骤1:创建名为Senderproj的liferay插件项目,并在Senderport下创建一个portlet,然后在doView方法中编写以下代码

 PortletSession session=req.getPortletSession();
 String s="naresh";
 session.setAttribute("gates",s,PortletSession.APPLICATION_SCOPE); 

Step2:创建名为Receiverproj的增殖插件项目并创建一个名为Receiverport的portlet,然后在doView方法中编写下面的代码

 PortletSession ps = req.getPortletSession();
 String tabName = (String)ps.getAttribute("gates",PortletSession.APPLICATION_SCOPE);
 System.out.println("this is from doView of ipc receiver portlet"+tabName);

步骤3:我在liferay portlet中添加了属性。如下所示的xml

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

当我在门户页面中删除两个portlet时,我在Receiverport中得到了会话值null。

有人能帮忙吗

共有1个答案

金晨
2023-03-14

首先检查

然后,使用APPLICATION\u SCOPE设置并获取会话属性:

renderRequest.getPortletSession().setAttribute(
    "name", "some value", PortletSession.APPLICATION_SCOPE
);

renderRequest.getPortletSession().getAttribute(
    "name", PortletSession.APPLICATION_SCOPE
);

到目前为止,这似乎是你已经在做的事情。

如果它们在同一页上,我们必须确保它们以正确的顺序加载。在Liferay中,这可以通过设置渲染权重来实现。(在实际情况下,它们最好不依赖于加载顺序。)

<!-- Sender -->
<portlet>
    <portlet-name>test-a</portlet-name>
    <icon>/icon.png</icon>
    <instanceable>true</instanceable>
    <private-session-attributes>false</private-session-attributes>
    <render-weight>3</render-weight> 
    ...
</portlet>

<!-- Receiver -->
<portlet>
    <portlet-name>test-b</portlet-name>
    <instanceable>true</instanceable>
    <icon>/icon.png</icon>
    <private-session-attributes>false</private-session-attributes>
    <render-weight>2</render-weight> 
    ...
</portlet>

此外,这个链接可能会有所帮助:Liferay会话共享解密

 类似资料:
  • 首先,我是C、C++、C#、Android和Swift的开发人员,但我绝对没有JavaScript、PHP或Web开发经验。 即只接受整数值的输入。 这是刀片代码:

  • 需要帮助编写一个cassandra udf来添加/除/乘两个变量。尝试下面的代码,但它似乎不工作。而且我没有在Java的经验,所以可能是我不能调试。感谢你的帮助。

  • 我目前正在从事一个托管在域上的laravel项目。此应用程序的一部分(某些功能)必须位于不同的域上。我在我的网上找到了一条路。在php中,我用以下命令映射了所有路由: 以及需要以相同方式位于另一个域上,但具有不同域的路由。好啊在主域中,我创建了一个具有src属性的图像: 指向此方法路线: 它起作用了。我在不同的域上共享同一个会话,但是,我想问你们,对于这个案例场景,你们是否知道更好的方法。我知道这

  • 然后,这需要转到数据库,该数据库向工作人员发送返回消息,告诉他们该成员已被添加。 只有工作人员在和系统通话,没有人。

  • 我是一名Java新手,在可比接口中重写compareTo方法时遇到了一些问题。我的代码创建了一个HashMap,将字符串与int关联起来。我希望重写compareTo,以便ArrayList键中的字符串根据其HashMap值排序,而不是按字母顺序排序。然而,在这种实现下,字符串仍然按字母顺序排序。 哦,澄清一下,nameWeight是字符串和整数对的哈希映射。 有什么想法吗?

  • 您可以使用共享文件夹 Microsoft 管理控制台 (MMC) 管理单元集中管理计算机上的文件共享。共享文件夹允许您创建文件共享和设置权限,查看和管理打开的文件以及连接到计算机上文件共享的用户。