将参数传递给 liferay portlet

passing parameters to a liferay portlet

我设计了一个带有单个 portlet 的网页。 我想将参数传递给这个 portlet。 所以我以这种方式调用我的网页(在本地 liferay 实例上): http://localhost:8080/group//?参数=1

为了避免误解,我不只是试图在 portlet 的页面之间传递参数(要查看的控制器)。我知道该怎么做,而且效果很好。 在这种情况下,我尝试使用 URL 托管它的参数启动我的 portlet。

我从文档中了解到 portlet 无法访问 URL 参数 我读到的建议解决方案是使用 "friendly-url-mapper".

我没能成功。这是我到目前为止所做的:

我加入liferay-portlet.xml:

<friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class>
<friendly-url-mapping>view</friendly-url-mapping>
<friendly-url-routes>friendly-url-routes-for-parameters.xml</friendly-url-routes>

view 值设置正确吗?真怀疑。

我创建了 friendly-url-routes-for-parameters.xml 内容如下:

<routes>
    <route>
        <pattern>/result?{match}</pattern>
        <implicit-parameter name="param">{match}</implicit-parameter>
    </route>
</routes>

/result 映射到我的控制器 class 中的 result.jsp 页面(这部分有效):

我希望: http://localhost:8080/group//?参数= 和/或 http://localhost:8080/group///-/view/?param= 将使用 ?param= 参数重定向到我的 result.jsp。

我哪里理解错了?

好吧,你可以,你不能,但基本上你不应该,但我没有人告诉你你应该做什么,不应该做什么。

要得到这个参数你应该做的是获取原始的servlet

HttpServletRequest httpReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(req));

然后您可以使用 getParameter 简单地获取您想要的参数 方法

String myParam = httpReq.getParameter("param");

希望对您有所帮助