Liferay 7 无法设置全局会话属性

2023-12-21

我正在尝试设置会话属性 [HTTP 或 Portlet 会话],以便我可以全局访问它(通过门户)。但是,在获取 Session 属性时,它返回的是 null 而不是实际值。

设置会话属性:

@Component(
immediate = true,
property = {
    "com.liferay.portlet.display-category=IPC Sender",
    "com.liferay.portlet.instanceable=true",
    "javax.portlet.display-name=IPC_Sender Portlet",
    "javax.portlet.init-param.template-path=/",
    "javax.portlet.init-param.view-template=/view.jsp",
    "com.liferay.portlet.private-session-attributes=false",
    "javax.portlet.resource-bundle=content.Language",
    "javax.portlet.security-role-ref=power-user,user"
},
service = Portlet.class
)

public class ipcsenderPortlet extends MVCPortlet {

public void hello(ActionRequest actionRequest,
        ActionResponse actionResponse) throws Exception 
{   
//Trying to set HttpSession but its also getting null while retrieving
HttpServletRequest httpreq = PortalUtil.getHttpServletRequest(actionRequest);
HttpSession session = httpreq.getSession(true);
session.setAttribute("transfer", "content");

////Trying to set Portletsession but its also getting null while retrieving
PortletSession portletsession = actionRequest.getPortletSession();
portletsession.setAttribute("sendvalue","abcde", 
PortletSession.APPLICATION_SCOPE);
}
}

获取不同 Portlet 中的会话属性:

@Component(
    immediate = true,
    property = {
        "com.liferay.portlet.display-category=IPC Receiver",
        "com.liferay.portlet.instanceable=true",
        "javax.portlet.display-name=IPC_Receiver Portlet",
        "javax.portlet.init-param.template-path=/",
        "javax.portlet.init-param.view-template=/view.jsp",
        "javax.portlet.resource-bundle=content.Language",
        "com.liferay.portlet.private-session-attributes=false",
        "javax.portlet.security-role-ref=power-user,user"
    },
    service = Portlet.class
)
public class ipcreceiverPortlet extends MVCPortlet 
{
    public void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException 
    {
        //HttpSession
         HttpServletRequest httpreq = PortalUtil.getHttpServletRequest(renderRequest);
         HttpSession session = httpreq.getSession();
         String name = (String)session.getAttribute("transfer");
         System.out.println("Session value through HttpSession:"+name);

         //PortletSession
         PortletSession portletsession = renderRequest.getPortletSession();
         String userName = (String) portletsession.getAttribute("sendvalue",PortletSession.APPLICATION_SCOPE);
         System.out.println("\nSession value through PortletSession:"+userName);
    }
}

这不是一个错误! Liferay 是一个 portlet 容器,在 portlet 规范中,每个 portlet 都是具有不同会话的不同上下文。您试图在一个 portlet 会话中保存数据并在其他 portlet 会话中恢复它,这是不正确的。 Liferay提供了获取门户全局会话的方法:

        PortalSessionThreadLocal.getHttpSession();

该会话可以从门户的每个 portlet 中检索,但重要的是要指定在集群环境中强烈建议不要在全局会话中保存数据,这主要是因为如果您从仅存在于 portlet 中的类保存实例,您可能会从以下位置获得 ClassNotFoundException:其他不知道该类的 portlet。全局会话仅建议用于保存原始数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Liferay 7 无法设置全局会话属性 的相关文章

  • 如何通过代码添加嵌套portlet(liferay)

    我们在 liferay 中有一个叫做嵌套 portlet 的东西 我想通过代码动态添加此 portlet 有谁知道添加嵌套 portlet 并在其中添加其他 portlet 的代码吗 谢谢 对于完整的示例 我假设您想要使用另一个 portl
  • 如何在 Liferay portlet 中设置 Cookie?

    我在尝试设置会话 cookie 时遇到问题Liferay 6 0 portlet 我希望能够向客户端浏览器设置一个 cookie 以存储用于 linkedin 身份验证的应用程序密钥 然后其他 portlet 可以在其中检索它 我可以使用以
  • Portlet 中的 YUI 版本冲突问题

    我正在从 portlet 加载 yui js 3 3 0 版本文件 但 liferay 使用 3 2 0 yui js 文件 所以每当我加载该页面时 就会出现 js 错误 G ENV loaded VERSION 未定义 此错误出现在 yu
  • 会话不活动弹出窗口中的“注销”链接

    如何在 liferay 中弹出的会话不活动弹出窗口中添加一个 注销 链接 目前 我们在该弹出窗口中没有任何超链接 我们只有警告消息 请帮助我如何解决这个问题 因为我是 liferay 的新手 谢谢 苏拉夫 解决方法如下 您可以在 Lifer
  • 如何在 Liferay 6 中以编程方式创建结构和模板

    我需要通过 java 代码以编程方式创建结构和模板 我使用了以下代码片段 结构 public void createStructure String userName long userId log info Inside create s
  • Liferay 搜索容器分页

    我在代码中使用了 liferay ui search container 搜索结果会正确显示 直到我单击 下一步 该 portlet 正在重新加载 这会将我带到该 portlet 的第一页 从而破坏了所显示的搜索结果 即使在 portlet
  • 在 Life ray 中自定义站点管理员角色的权限?

    我想自定义站点管理员角色权限 即我需要启用一项功能来创建用户以在相应站点下进行站点管理 我怎样才能做到这一点 我需要用 Hook 来实现它还是需要创建 EXT 或者任何其他更简单的方法来实现这一目标 我需要在相应站点下启用用户创建并为站点管
  • 服务器重启后 Liferay 调度程序不工作

    我正在使用下面的代码安排工作 Controller RequestMapping VIEW public class MyController RenderMapping public String defaultView try Stri
  • 在 Liferay-Portlet 中哪里放置资源-操作-映射?

    我正在尝试根据以下内容向 Liferay Portlet 添加权限Liferay 文档 http www liferay com web guest community wiki wiki Main Using 20Liferay s 20
  • 从 Portlet 中删除自定义权限/操作

    我已经能够根据 Liferay Plugins SDK 中的示例定义自定义 portlet 操作 权限 https github com liferay liferay plugins tree master portlets sample
  • Liferay:从 init() 获取 PortletID 和 companyID

    也许通过 init PortletConfig 中的 PortletConfig 问题是使用 PortletConfigImpl portletConfig getPortletId 不再允许 因为在 package properties
  • Liferay:如何保存到portlet用户信息?

    我在欢迎页面上有一个天气 portlet 用户可以配置该 portlet 并选择他的城市 是否可以将用户信息存储在 portlet 首选项中 以便每个用户都有一个存储的城市 或者存储用户 portlet 信息而无需开发自己的 持久 服务的标
  • 我可以使用 Liferay 6.1.0 中的 Kaleo 和其他 portlet吗?在6.1.1版本中?

    我可以使用 Liferay 6 1 0 中的 Kaleo 和其他 portlet吗 在6 1 1版本中 我尝试将kaleo放入6 1 1版本的webapps和deploy目录中 但没有任何反应 我是否需要将 portlet 修改为新规范 对
  • Liferay 连接和压缩 javascript

    我试图弄清楚如何实现所有 js 文件的压缩和缩小 目前我将它们放在一个钩子插件中 html js mycustomjs folder 我知道liferay有自己的机制来压缩javascripts 在barebone jsp或 everyth
  • 如何在 Eclipsce juno 中开发 Liferay 项目并在 Jboss 上构建它

    我已经下载了 Liferay 6 1 和 jboss 7 1 1 Bundle 以及 Liferay IDE Eclipsce Juno 我所要做的就是开发 Liferay 项目并在 Jboss 服务器上运行它 我可以在 localhost
  • Hibernate:未配置 CurrentSessionContext

    我不断收到 Hibernate异常 否 CurrentSessionContext已配置 在我的代码中 其他搜索返回的唯一信息是罪魁祸首是
  • Liferay:登录 Liferay 的默认方法是什么?

    通过开发 portlet hooks 等 我看到了在 Liferay 中登录的不同方法 是否有我可以使用的默认日志记录方法 Liferay Way 1 如何初始化记录器 2 如何配置日志级别 我看到可以直接在Liferay 控制面板中修改日
  • 如何禁用默认消息:“您的请求已成功处理”?

    当在我的 portlet 中执行添加 更新操作时 如何为我的插件 portlet 禁用此默认消息 您的请求已成功处理 另外我想为我的自定义配置页面禁用此功能 configuration jsp 这是当我们单击每个 Portlet 右上角出现
  • IntelliJ IDEA 中为 Tomcat 设置了哪个应用程序上下文?

    到目前为止 我在 Windows 命令中运行 Tomcat 服务器 v 7 0 26 catalina bat start脚本 如果我想部署我的 Web 应用程序 我必须通过 Maven 构建它并复制 WAR 到指定 Tomcat 部署目录
  • 在服务器上部署 .war 文件(Liferay+Tomcat Bundle)

    我已经准备好我的新 Liferay 网站并尝试在真实环境中测试它 我刚刚在我的服务器上成功安装了 Tomcat Liferay 捆绑包 并根据一些论坛和评论的说明将 war 文件复制到 tomcat 旁边的部署目录中 但访问该 URL 后

随机推荐

  • 上传 iOS 应用程序时,应用程序加载器卡在“通过 iTunes 商店进行身份验证”

    我们已经尝试使用应用程序加载器向 iTunes 商店提交应用程序三天了 但一直卡在 通过 iTunes 商店进行身份验证 step 我们阅读了许多论坛 包括 stackoverflow 并尝试了建议的内容 制作新的配置文件 使用不同或多个版
  • idn2.h:没有这样的文件或目录

    我使用的是 64 位 Centos 6 6 想要安装 libidn2 devel 我试过yum install libidn2 devel但这不起作用 我尝试从互联网上的各个网站下载rpm 手动解决递归依赖关系 不是这样 很快我就陷入了依赖
  • 使用线程计算不同单词的数量

    目的是计算文件中不同单词的数量 更新 先前的代码已成功完成 现在我必须做同样的事情但是使用threads 天哪 我讨厌他们 此外我还想与信号量为了更好的流动 代码包含一些以前尝试中遗漏的额外内容 我正在尝试找出可以使用的内容 我一次可以读一
  • 如何在 MATLAB 中重新定义 .^ 运算符?

    如何重新定义指数函数 在 MATLAB 中 从 x y to sign x abs x y 您可以在 MATLAB 中重新定义算术运算符吗 可以 Should你在 MATLAB 中重新定义了算术运算符 呃 可能不是 为什么 因为 MATLA
  • SwiftUI .deleteDisabled() 未按预期工作

    iOS 16 刚刚发布 我正在尝试更新我的应用程序 在做这件事的时候 我偶然发现了一个问题 在 iOS 15 中 我有一个可以删除项目的列表 但这只有当 isEditing 变量为true 问题是 deleteDisabled 没有做我期望
  • java中使用zxing扫描多个条形码

    我需要从 tiff 读取 pdf417 条形码 图像上通常有多个条形码 这是我的代码 InputStream in null BufferedImage bfi null File files new File DIR listFiles
  • 如何使用 HTML、CSS 使背景 div 内弯曲? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望我的部分背景看起来像最后的图片所示 我该如何使用 css 来做到这一点 bg width 400px height 200px
  • 当我将 android.permission.UPDATE_DEVICE_STATS 添加到我的 app.error 时发生

    我开发了一个应用程序 需要获取android permission UPDATE DEVICE STATS允许 但是 当我将此权限添加到我的应用程序 AndroidManifest xml 文件时 出现此错误 权限仅授予系统应用程序 我可以
  • 为什么 FFMPEG 总是生成很大的 WebM 文件?

    我正在尝试将我的电影编码为 WebM ffmpeg i input MOV codec v libvpx quality good cpu used 0 b v 10k qmin 10 qmax 42 maxrate 10k bufsize
  • Thymeleaf 装饰器不工作

    我创建了一个新的 Spring boot 项目 并希望将 Thymeleaf 与 LayoutDialect 结合使用 我的 pom xml 有以下依赖项
  • Ruby - 从字符串中删除模式

    我有一个字符串模式 作为示例 如下所示 WBA Skinny Joe vs Hefty Hal 我想从字符串中截断模式 WBA 并仅返回 Skinny Joe vs Hefty Hal 假设 WBA 位置是任意字母或数字的序列 后跟空格 破
  • 如何在性能损失很小的情况下包装 React 组件?

    我的团队使用 React材质用户界面 https material ui next com 图书馆 为了提供一致的 UI 模式并方便我们自定义 MaterialUI 的组件 我们将每个 MaterialUI 的组件包装在我们自己的组件中 例
  • Azure AD B2C - 如何实施自定义注册流程?

    这基本上是我之前问题的后续 https stackoverflow com a 44738654 2896495 https stackoverflow com a 44738654 2896495 我已经在我的 Web 应用程序 NET
  • 如何从外部分离 gdb 会话?

    我使用如下命令在后台启动 gdb 会话 gdb batch command tmp my automated breakpoints gdb p pid of proces gt gt tmp gdb results log The 最后让
  • 如何确定当前文化/区域设置是否使用 am/pm 还是 24 小时时间?

    我需要确定当前的区域性 区域设置是否设置为使用 am pm 时间或 24 小时时间 起初我以为我可以这样做 bool time24Hour Thread CurrentThread CurrentCulture DateTimeFormat
  • 使用 info.plist 存储多目标应用程序的特定于目标的值

    我有一个多目标 iPhone 应用程序 当前包含一个带有常量定义的头文件 这些常量定义在构建时有条件地包含 具体取决于正在构建的目标 但是 我想知道是否最好将此信息包含在构建的 info plist 中 因为这通常包含特定于目标的元 因此逻
  • 从后面的代码调用 javascript

    我有一个 c asp net 3 5 应用程序 我试图在某个事件发生后从代码后面打开一个窗口 我有这个 但它不起作用 并且 firebug 中没有错误 protected override void OnPreRender EventArg
  • 浏览器中跨时区的相同日期时间 - 在预订引擎上

    我正在寻找在任何浏览器中使用同一时间在国际上预订服务的最佳实践 解决方案 我不太明白其中的逻辑 也在这里挖掘 Use case 布鲁塞尔预订的用户假设有一家位于新加坡的理发服务 他一周后将飞往那里 他在浏览器日期时间控件中选择 14 00
  • Android:对Fragment使用Activity的默认动画

    我需要在片段替换中使用活动默认动画 但是使用android R anim我找不到它 我怎样才能找到它的名字 是否可以默认使用它 或者我必须手动创建动画才能使用它 预先非常感谢 在搜索了这个确切的问题后 我在 Google 论坛上找到了这个资
  • Liferay 7 无法设置全局会话属性

    我正在尝试设置会话属性 HTTP 或 Portlet 会话 以便我可以全局访问它 通过门户 但是 在获取 Session 属性时 它返回的是 null 而不是实际值 设置会话属性 Component immediate true prope