2016-06-16 4 views
0

У меня есть требование, где мне нужно, чтобы получить имя страницы из запроса в методе doView и перенаправить его на page_name_SUFIX, но я не могу найти способ, чтобы декодировать URL WebSphereWebSphere: как получить имя декодированной страницы в методе портлета doView?

Когда я прошу ракурс для " Pagename»Я должен сделать что-то вроде этого:

public void doView(RenderRequest req, RenderResponse res) { 
    String decodedURL = decodeURL(req); // This is the method that I need, decodedURL should be 'pageName' 
    (...) 
} 

Я работаю на WebSphere 8.0 и я попытался следующие без результатов.

http://wpcertification.blogspot.com.ar/2010/05/getting-name-of-page-where-your-portlet.html (Здесь я получил название страницы, но я не знаю, как получить имя)

WebSphere Portal decode url (я расшифровал URL, но я не могу найти название страницы в XML)

Есть ли способ достичь этого?

Спасибо заранее!

ответ

1

Итак, вопрос о сфере видимости, сверху неясно, имеете ли вы значение pageName как в уникальном имени страницы? Если это так, когда у вас есть objectid в строке или фактическом объекте, вы можете получить uniqueName из этого объекта.

здесь код, чтобы получить ObjectId текущей страницы общественного ObjectID getCurrentPage (запрос PortletRequest, PortletResponse ответ) бросает StateException, NamingException, IOException { ObjectID OID = NULL; try { NavigationSelectionModelProvider provider = getNavigationSelectionModelProvider();

 NavigationSelectionModel model = provider 
       .getNavigationSelectionModel(request, response); 
     NavigationNode node = (NavigationNode) model.getSelectedNode(); 
     oId = node.getObjectID(); 
    } catch (ModelException e) { 
     System.err.println("The current page could not be located = " + e); 
    } 

    return oId; 
} 

Теперь, если ваш вопрос касается параметра портлета, называемого pageName, то он должен быть в расшифрованном URL-адресе. уникальное имя для вас? что не будет в XML, но вы можете получить, что от ObjectId объекта

+0

Спасибо за ваш ответ. На самом деле мне нужно уникальное имя. Я пробовал ваш код, и oId.getUniqueName() возвращает null –

+0

Итак, две вещи: 1) может проглотить нуль, не уверен, что это или нет ссылка ниже, с моими помощниками в ней с полным кодом. 2) Вы уверены, что определен? вы отправили objectid в виде строки и искали в xmlaccess, чтобы узнать, что определено? существует вероятность того, что вы находитесь на производной странице, а не на родительской странице, на которой вы думаете, что вы не ведете к возврату uniquename. Во-первых, вы получаете возвращаемый OID, https: //connections.asponte.com/blogs/asppontecom/entry/Portal_8_0_and_8_5_Advanced_URL_Generation_Helper_classes? Lang = en_us – Crosstalk22

0

вы должны быть в состоянии получить идентификатор страницы/UniqueName с помощью метода doView похожее на это:

public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { 
    // Set the MIME type for the render response 
    response.setContentType(request.getResponseContentType()); 
    PortletServiceHome nsh = null; 
    javax.naming.Context ctx; 
    boolean serviceAvailable = false; 
    try { 
     ctx = new javax.naming.InitialContext(); 
     nsh = (PortletServiceHome)ctx.lookup("portletservice/com.ibm.portal.portlet.service.model.NavigationSelectionModelProvider"); 
     serviceAvailable = true; 


    } catch(NameNotFoundException nnfe) { 
     nnfe.printStackTrace(); 

    } catch(NamingException ne) { 
     ne.printStackTrace(); 
    } 

    // Check if portlet session exists 
    ShowPageLayoutPortletSessionBean sessionBean = getSessionBean(request); 
    if(sessionBean==null) { 
     response.getWriter().println("<b>NO PORTLET SESSION YET</b>"); 
     return; 
    } else if(!serviceAvailable) { 
     response.getWriter().println("<b>NO SERVICE AVAILABLE</b>"); 
     return; 
    } 

    try { 
    NavigationSelectionModelProvider nsProvider = (NavigationSelectionModelProvider) nsh.getPortletService(NavigationSelectionModelProvider.class); 
    NavigationSelectionModel navmodel = nsProvider.getNavigationSelectionModel(request, response); 
    NavigationNode navNode = (NavigationNode)navmodel.getSelectedNode(); 
    ContentPage contentPage = (ContentPage)navNode.getContentNode(); 
    ObjectID pageId = contentPage.getObjectID(); 



    // Invoke the JSP to render 
    PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(getJspFilePath(request, VIEW_JSP)); 
    rd.include(request,response); 

    } catch(Exception ex) { 
     ex.printStackTrace(); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^