[英]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");
有两种获取不带名称空间前缀的参数值的方法。
在liferay-portal.xml中添加以下行:
<require-namespaced-parameters> false </ require-namespaced-parameters>
您可以阅读如下内容:
String status = ParamUtil.getString(renderRequest, "statusparam");
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.