使用来自CMS的电子邮件,要求用户单击确认链接,该链接将引导他们到我们的Websphere Portal Server上的Servlet。
应该将用户重定向到向其显示成功或失败消息的portlet。从portlet到portlet,我将创建一个动作Url,添加参数并重定向用户。从Servlet执行此操作的正确方法是什么?
创建操作网址需要MimeResponse / RenderResponse,而不是HttpServletResponse。
答案 0 :(得分:0)
因此您可以使用我创建的辅助类http://www.asponte.com/wps/portal/asponte/labs/blog-detail/portal%208.0%20and%208.5%20advanced%20url%20generation%20helper%20classes 并使用servlet帮助器或脱机帮助器 需要注意的几件事是,如果该Portlet /页面需要认证,并且您在认证之前就生成了URL,则无法生成该Portlet的操作阶段的URL。如果您不想使用它们,则可以像这样直接使用高级url生成api 获取PortalStateManagerHome
this.psmsHome = ((PortalStateManagerServiceHome)ctx.lookup("portal:service/state/PortalStateManager"));
和导航选择模型
this.navSelHome =
((NavigationSelectionModelHome)ctx.lookup("portal:service/model/NavigationSelectionModel"));
然后从那里,您可以从家中获得供应商 服务= this.psmsHome.getPortalStateManagerService(请求,响应); provider = this.navSelHome.getNavigationSelectionModelProvider(); 那么您将获得这样的网址
URLAccessorFactory urlFactory =
(URLAccessorFactory)mgr.getAccessorFactory(URLAccessorFactory.class);
EngineURL url = urlFactory.newURL(request, response, mgr
.newState(), Constants.EMPTY_COPY);
SelectionAccessorFactory selectionFactory =
(SelectionAccessorFactory)mgr.getAccessorFactory(SelectionAccessorFactory.class);
SelectionAccessorController selectionCtrl = selectionFactory
.getSelectionAccessorController(url.getState());
selectionCtrl.setSelection(pageName);
selectionCtrl.dispose();
if (portletName != null)
{
PortletAccessorFactory portletAccessorFactory =
(PortletAccessorFactory)mgr.getAccessorFactory(PortletAccessorFactory.class);
PortletAccessorController portletCtrl = portletAccessorFactory
.getPortletAccessorController(portletName, url.getState());
Map parameters = portletCtrl.getParameters();
if (params != null)
{
String key = null;
Iterator paramsIterator = params.keySet().iterator();
while (paramsIterator.hasNext())
{
key = (String)paramsIterator.next();
parameters.put(key, params.get(key));
}
}
portletCtrl.dispose();
}
return url.writeDispose(new StringWriter()).toString
这将使您可以定位portlet并传递参数 如果您要执行特定操作,则需要使用actionaccessorfactory