有人能帮助我吗?我有自定义参数,例如“statusparam”。我想做这样的事情:
actionResponse.sendRedirect(redirect + "&statusparam=error");
但问题是自定义参数对liferay不友好,而liferay在我的render方法中看不到它:
String status = ParamUtil.getString(renderRequest, "statusparam");
如何使用自定义参数生成liferay友好的URL?或者我该如何服用它们?
答案 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)
有两种方法可以获取没有名称空间前缀的参数值。
在liferay-portal.xml中添加以下行:
< requires-namespaced-parameters>假< / requires-namespaced-parameters>
你可以这样读:
String status = ParamUtil.getString(renderRequest, "statusparam");
HttpServletRequest request = PortalUtil.getHttpServletRequest(renderRequest); String statusparam = request.getParameter("statusparam");
编辑:如果您只需要相同portlet的渲染方法中的此参数,请使用 setRenderParameter ,如:
actionResponse.setRenderParameter("statusparam", "error");
请记住,它不会添加URL,也不会在其他portlet中提供