【问题标题】:How do I add a Liferay non-group page?如何添加 Liferay 非群组页面?
【发布时间】:2015-09-04 04:20:34
【问题描述】:

我想创建一个不与用户或组绑定的通知页面,类似于 Liferay 处理 PayPal 集成的方式。也许我只是没有找到正确的网址。

如果您不熟悉 Liferay 如何处理 PayPal 集成,这里有一个摘要(当然,假设您已将购物 portlet 配置为使用 PayPal)。

  • 当用户使用 PayPal 结账时,页面被重定向到 用于登录和付款处理的 PayPal。
  • 当 Liferay 重定向到 PayPal 时,它会将通知 URL 传递给 PayPal 符合 PayPal 规范。
  • 一旦用户批准付款,Paypal 就会使用 Liferay 联系 这个网址(类似于http://myserver/c/shopping/notify)。
  • PayPal 通过 URL 传递参数以验证金额和付款, 这样购物 Portlet 就可以将购买标记为已完成。

我尝试使用 JSF 在我的 portlet 中的其他页面旁边添加一个页面 (/myservice/confirm),并尝试按照 http://myserver/c/myportal/confirm 的行调用它,但没有成功。

还有什么我需要做的吗?

谢谢。

【问题讨论】:

  • /shopping/notify 代表struts action url,在你的情况下/myservice/confirm 是什么?您能否提供更多信息以满足您的要求?
  • /myportal/confirm 是一个带有关联 bean 的 JSF 页面。 bean 将处理来自 PayPal 的参数,类似于 Liferay 中的 PayPalNotificationAction 类。现在 confirm.xhtml 只是一个从简单页面复制的占位符。

标签: liferay liferay-6


【解决方案1】:

您似乎需要一个不应绑定到任何用户页面或组页面的自定义 URL,例如 /c/blogs/findEntry?entryId=?,liferay 使用它来定向到具有博客 portlet 的页面。

因此,如果是这种情况,您可以使用 Struts-action 钩子创建一个。在 liferay-hook.xml 你可以创建一个 URL 为

<struts-action-path>/portal/mycustom/customURL</struts-action-path>

所以现在如果您点击 URL http://myserver/c/portal/mycustom/customURL,您将被定向到您的自定义操作。在自定义操作中,您可以处理并定向到附加到站点或用户的门户页面。

这里是使用struts-action hook的官方文档链接:Adding and Overriding Struts Action.


如果这不是您想要的,而是您想添加一个物理页面,您也可以在其中添加 portlet。那么没有附加到用户、用户组或站点(组)的页面是不可能的。

另外,如果你想用 URL 直接显示你的 JSP,那是不可能的。因为 portlet 是显示 JSP 或 JSF 的。您仍然可以执行以下操作来感觉这是一个单独的页面:

  1. 因此您可以创建一个隐藏页面,可能位于 URL /myNotify 的访客站点中。
  2. 将您的 portlet 放在具有整页布局的页面中。
  3. 创建一个 struts 操作或filter-hook 来拦截您的自定义 URL。
  4. 处理请求并使用 portlet 重定向到页面 /myNotify,您的 portlet 将显示通知消息。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-08
    • 2010-12-27
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2016-03-12
    • 2021-02-08
    相关资源
    最近更新 更多