Как получить имя страницы со страницы WebSphere Portal? - PullRequest
0 голосов
/ 25 апреля 2019

Я создаю портлет для 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);
}

Ожидаемым результатом будет получение имени страницы или уникального имени текущегостраница, на которой отображается портлет.

1 Ответ

0 голосов
/ 13 мая 2019

Вы можете попробовать, поможет ли приведенный ниже фрагмент кода.Вы можете получить значение URI и извлечь из него имя страницы.

HttpServletRequest httpServletRequest = PortletUtils.getHttpServletRequest (renderRequest);httpServletRequest.getRequestURI ();

...