这两者之间有什么区别吗:这是从 ActionPhase 到 RenderPhase。
1
PortletURL manageUrl = response.createRenderURL();
manageUrl.setParameter("action", "search");
2
ActionResponse.setRenderParameter("action", "search");
何时使用其中一个
这两者之间有什么区别吗:这是从 ActionPhase 到 RenderPhase。
PortletURL manageUrl = response.createRenderURL();
manageUrl.setParameter("action", "search");
ActionResponse.setRenderParameter("action", "search");
何时使用其中一个
第一个片段生成一个渲染 URL,您将在页面中使用它作为带有“action”参数的渲染阶段的直接链接。
第二段代码为当前请求添加了一个“action”渲染参数,所以在你的动作阶段执行之后,渲染阶段将可以访问这个新参数。例如,它可以用于将数据从您的操作阶段传递到您的渲染阶段,或者如果您有多个渲染方法(使用@RenderMapping 注释的几个方法),则可以选择正确的渲染方法。
情况1:
**Code on Portlet**
PortletURL manageUrl = response.createRenderURL();
manageUrl.setParameter("action", "search");
request.setAttribute("manageUrl",manageUrl);
**Code on Jsp(it can be any view layer)**
<a href="${manageUrl}">Click here </a>
案例二:
**It can be any custom process action**
public void processAction(..)
{
ActionResponse.setRenderParameter("action", "search");
}
**It can be any custom render method**
public void doView(..)
{
System.out.println("Action value :-"+action);
ActionResponse.setRenderParameter("action", "search");
}
第二个片段也有一个限制。你不能使用 ActionResponse.setRenderParameter("action", "search"); 和 ActionResponse.sendRedirect("/some url"); 同时地。