我怎么知道 url 导致调用 portlet spring mvc liferay 的 @RenderMapping render() 方法?

how do I know the url caused the invocation of the @RenderMapping render() method of portlet spring mvc liferay?

我有一个 spring 基于 mvc 的 portlet,其内容是根据由 @RenderMapping 方法 return 编辑的视图生成的。 是否有关于如何捕获导致 portlet 呈现的 url 的解决方案。因为我使用的支付系统 return 字段到这个 portlet,我想在 # jsp 页面中显示它们,所以在这种情况下,我应该根据字段呈现另一个 jsp return由支付服务器编辑。

提前致谢

您可以通过以下两种方式之一获取导致调用 portlet 生命周期 RENDER_PHASE 的 URL:

import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.WebKeys;
...
ThemeDisplay themeDisplay = (ThemeDisplay)renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
String portalURL = themeDisplay.getPortalURL();

-或-

import com.liferay.portal.kernel.util.PortalUtil;
...
String portalURL = PortalUtil.getCurrentURL(renderRequest);

但是我不建议检查 URL 的字符串表示形式。 Portlet API 的设计方式使得调用 portlet 生命周期的 javax.portlet.RenderURL 可以是特定于供应商的实现细节。例如,来自 Liferay 的渲染 URL 将不同于来自 Apache Pluto 的渲染。相反,鼓励 Portlet 开发人员使用 Portlet API 的功能来获取请求参数、属性等的值。

也许您可以在您的问题中添加一些细节,准确描述您所关心的 URL 的哪个方面。