我设计了一个包含单个portlet的网页。 我想将参数传递给此portlet。 所以我以这种方式调用我的网页(在本地的liferay实例上): http://localhost:8080/group/ /?PARAM = 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>
查看正确的值来设置吗?真正怀疑它。
我使用以下内容创建了friendly-url-routes-for-parameters.xml:
<routes>
<route>
<pattern>/result?{match}</pattern>
<implicit-parameter name="param">{match}</implicit-parameter>
</route>
</routes>
/ result被映射到我的控制器类的result.jsp页面(这部分有效):
我希望如此: http://localhost:8080/group/ /?PARAM = 和/或 http://localhost:8080/group/ // - ?/视图/ PARAM = 会使用?param =参数重定向到我的result.jsp。
我没有正确理解的是什么?
答案 0 :(得分:3)
好的,你可以而且你不能,但基本上你不应该,但我没有人告诉你你应该做什么,不该做什么。
获取此参数应该做的是获取原始servlet
HttpServletRequest httpReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(req));
然后您可以使用getParameter
获取所需的参数
方法
String myParam = httpReq.getParameter("param");
希望这有帮助