Reputation: 1235
Can someone help me? I have custom parameter, "statusparam" for example. And I want to do something like this:
actionResponse.sendRedirect(redirect + "&statusparam=error");
But the problem is that custom parameter is non-friendly to liferay and liferay doesn't see it in my render method:
String status = ParamUtil.getString(renderRequest, "statusparam");
How can I generate liferay-friendly URL with my custom parameters? Or how can I take them?
Upvotes: 1
Views: 1567
Reputation: 36
There are two ways to get parameter values which don't have namespace prefix.
Add following line in liferay-portal.xml :
< requires-namespaced-parameters > false < / requires-namespaced-parameters >
and you can read like:
String status = ParamUtil.getString(renderRequest, "statusparam");
HttpServletRequest request = PortalUtil.getHttpServletRequest(renderRequest); String statusparam = request.getParameter("statusparam");
Edit: If you only need this parameter in render method of same portlet, use setRenderParameter like:
actionResponse.setRenderParameter("statusparam", "error");
Remember, it will not add in URL and also will not available in another portlets
Upvotes: 2
Reputation: 4730
Pattern 1: setRenderParameter
One way is to set render parameter(s) in action phase using setRenderParameter
as following:
actionResponse.setRenderParameter("statusparam", "error");
and then get using:
String status = renderRequest.getParameter("statusparam");
or
String status = ParamUtil.getString(renderRequest, "statusparam");
Pattern 2: Global property
Other way is to put a global property in action class, assign it value in action method then it would be accessible in render method as well.
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";
}
}
Pattern 3: queryString
While, if you want to pass it as queryString
parameter, then you can extract it from HttpServletRequest
object in render phase as following:
HttpServletRequest request = PortalUtil.getHttpServletRequest(renderRequest);
String statusparam = request.getParameter("statusparam");
Upvotes: 2