Я создаю портлет для WebSphere portal 8 и хотел бы получить имя страницы, где отображается мой портлет.Это важно, потому что в зависимости от страницы портлет будет обрабатывать содержимое по-разному
Я пытался использовать API NavigationSelectionModel, но не думаю, что я использую его правильно.Я хочу, чтобы этот код происходил до визуализации представления, и я поместил код в метод doView.Проблема заключается в том, что я не могу привести ServletRequest / Response, потому что у меня есть только RenderRequest и RenderResponse, доступные в методе doView.
public void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
// Declarations
List<ForeignAuthority> faList = new ArrayList<ForeignAuthority>();
String resp;
// Set the MIME type for the render response
response.setContentType(request.getResponseContentType());
// Check if portlet session exists
ForeignAuthoritiesPortletSessionBean sessionBean = getSessionBean(request);
if (sessionBean == null) {
response.getWriter().println("<b>NO PORTLET SESSION YET</b>");
return;
}
try{
Context ctx = new InitialContext();
NavigationSelectionModelHome home = (NavigationSelectionModelHome)
ctx.lookup("portal:service/model/NavigationSelectionModel");
if (home != null) {
NavigationSelectionModelProvider provider =
home.getNavigationSelectionModelProvider();
NavigationSelectionModel model =
provider.getNavigationSelectionModel((ServletRequest)request, (ServletResponse)response);
for (java.util.Iterator i = model.iterator(); i.hasNext(); )
{
NavigationNode node = (NavigationNode) i.next();
if (i.hasNext()) {
System.out.println(node.getObjectID().getUniqueName());
}
}
}
}catch(Exception e){
e.printStackTrace();
}
PortletRequestDispatcher rd = getPortletContext()
.getRequestDispatcher(getJspFilePath(request, VIEW_JSP));
rd.include(request, response);
}
Ожидаемым результатом будет получение имени страницы или уникального имени текущегостраница, на которой отображается портлет.