繁体   English   中英

Liferay Portlet:Liferay友好的自定义Url参数

[英]Liferay portlet: liferay friendly custom Url parameter

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

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

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

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

如何使用自定义参数生成对Liferay友好的URL? 或者我该如何接受?

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

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

然后使用:

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

要么

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

模式2:全球财产
另一种方法是将全局属性放在动作类中,在动作方法中为其分配值,然后在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. 在liferay-portal.xml中添加以下行:

    <require-namespaced-parameters> false </ require-namespaced-parameters>

您可以阅读如下内容:

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

编辑:如果仅在同一portlet的render方法中需要此参数,请使用setRenderParameter,例如:

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

记住,它不会添加URL,也不会在其他Portlet中使用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM