Liferay portlet:liferay友好的自定义Url参数

时间:2015-09-15 12:02:50

标签: java liferay portlet spring-portlet-mvc

有人能帮助我吗?我有自定义参数,例如“statusparam”。我想做这样的事情:

actionResponse.sendRedirect(redirect + "&statusparam=error");

但问题是自定义参数对liferay不友好,而liferay在我的render方法中看不到它:

String status = ParamUtil.getString(renderRequest, "statusparam");

如何使用自定义参数生成liferay友好的URL?或者我该如何服用它们?

2 个答案:

答案 0 :(得分:2)

模式1:setRenderParameter
一种方法是使用setRenderParameter在操作阶段设置渲染参数,如下所示:

actionResponse.setRenderParameter("statusparam", "error");

然后使用:

String status = renderRequest.getParameter("statusparam");

String status = ParamUtil.getString(renderRequest, "statusparam");

模式2:全球财产
另一种方法是将一个全局属性放在action类中,在action方法中赋值,然后在render方法中也可以访问它。

public class MyPortletAction extends GenericPortlet {
    String statusparam = "";

    public void doView(RenderRequest renderRequest, RenderResponse renderResponse) {

        if(statusparam != ""){
            // Perform operation as per your requirement
        }
    }

    public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) {

        // Set statusparam here:
        statusparam = "error";
    }
}

模式3:queryString
虽然,如果您想将其作为queryString参数传递,那么您可以在渲染阶段从HttpServletRequest对象中提取它,如下所示:

HttpServletRequest request = PortalUtil.getHttpServletRequest(renderRequest);
String statusparam = request.getParameter("statusparam");

答案 1 :(得分:2)

有两种方法可以获取没有名称空间前缀的参数值。

  1. 在liferay-portal.xml中添加以下行:

      

    < requires-namespaced-parameters>假< /   requires-namespaced-parameters>

  2. 你可以这样读:

    String status = ParamUtil.getString(renderRequest, "statusparam");
    
    1. 或者使用HttpServletRequest,如:
    2. HttpServletRequest request = PortalUtil.getHttpServletRequest(renderRequest);
      String statusparam = request.getParameter("statusparam");
      

      编辑:如果您只需要相同portlet的渲染方法中的此参数,请使用 setRenderParameter ,如:

      actionResponse.setRenderParameter("statusparam", "error");
      

      请记住,它不会添加URL,也不会在其他portlet中提供