[Liferay-公共渲染参数被缓存/错误

问题描述 投票:0回答:1

我有一个非常基本的要求。一页上有两个portlet。第一个接收参数,进行一些计算并将新参数设置为公共渲染参数。第二个Portlet应该只显示该值。容易吧?所以我试图做到这一点。这是第一个Portlet的操作方法,该方法仅接收参数并设置公共渲染参数。

public void testAction(ActionRequest actionRequest, ActionResponse actionResponse) throws IOException, PortletException {
   long someNumber = ParamUtil.getLong(actionRequest, "someNumber");
   actionResponse.setRenderParameter("number", someNumber + "");
}

第二个Portlet的render方法更加基本:

public void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {
    long number = ParamUtil.getLong(renderRequest, "number");
    renderRequest.setAttribute("number", number);
    super.doView(renderRequest, renderResponse);
}

在第二个Portlet的view.jsp中,我只是显示该'数字'。现在,我生成一个操作URL,将“ someNumber”设置为2,将第二个URL与“ someNumber”设置为5。现在,我复制第一个URL并在新选项卡中将其打开。第二个portlet向我显示了'number'的值2,这是正确的。我复制了第二个URL,并且也获得了'number'的值2,尽管它应该显示为5。值2。如果我反过来做,那么先打开第二个URL,然后再打开另一个,则两个选项卡中的值均为5。以某种方式缓存值。为什么?两个portlet都具有注释javax.portlet.supported-public-render-parameter=number

java liferay liferay-7
1个回答
0
投票

我发现了问题。您必须在portlet类中设置以下属性。

"javax.portlet.init-param.copy-request-parameters=false"

如果将其设置为true,则方法copyRequestParameters将把渲染参数设置回旧值。这可能是Liferay错误。顺便说一句,在Liferay 6中,此属性默认设置为false。这就是为什么从迁移到Liferay 7以来我注意到此问题的原因。

© www.soinside.com 2019 - 2024. All rights reserved.