JSF + Liferay : Cannot send parameters from a bean to another

标签 jsf liferay portlet

我已经尝试了所有方法,但没有任何效果,在目标 @PostConstruct 中参数为空。

我正在发送从 BeanA 到页面(由 BeanB 支持)的重定向,并尝试从 BeanB 中提取参数。要求是不要在 URL 中添加参数。

我尝试了所有方法:

  • FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("userId", userId);
  • @SessionScoped bean,
  • ec.getFlash().put("userId", userId);

有什么建议吗? 我正在重定向:

 FacesContext facesContext = FacesContext.getCurrentInstance();
        facesContext.getExternalContext().redirect(url);

最佳答案

Portlet API 知道两个 session 范围:PORTLET_SCOPEAPPLICATION_SCOPE

默认桥将 session 映射中的所有属性映射到 PORTLET_SCOPE,这意味着这些属性仅对 portlet 可见。

如果您想写入和读取所有 portlet 的 session 属性,则必须使用:

PortletSession session = ((PortletSession) FacesContext.getCurrentInstance().
    getExternalContext().getSession(true));

// set
session.setAttribute(attributeName, value, PortletSession.APPLICATION_SCOPE);
// get
Object value = session.getAttribute(attributeName, PortletSession.APPLICATION_SCOPE);

在 XHTML 中,您也可以使用 #{httpSessionScope.attributeName}

关于JSF + Liferay : Cannot send parameters from a bean to another,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29945266/

相关文章:

java - 如何在liferay中通过代码动态添加iframe

java - 在单独的 war 文件中的 portlet 之间共享 bean

jquery - 使用 PrimeFaces 手动添加/加载 jQuery 会导致未捕获的类型错误

jsf - 标题中带有垂直文本的数据表

java - 服务构建器在构建时无法删除其 jar 文件

java - 如何以编程方式动态添加 liferay portlet 实例并通过单击按钮将 portlet 安装到仪表板页面?

javascript - 在门户中显示图片库

jsf - <p :rowExpansion> and empty values in <p:cellEditor> on scrolled page when using <p:dataTable lazy ="true" liveScroll ="true"> 中的错误值

javascript - 如何在鼠标悬停时打开 primefaces selectOneMenu

java - 在 Java Portlet 中获取用户角色