2016-06-16 2 views
0

doViewメソッドのリクエストからページ名を取得し、page_name_SUFIXにリダイレクトする必要があるが、WebSphere URLをデコードする方法が見つからないという要求がありますWebSphere:doViewポートレットメソッドでデコードされたページ名を取得する方法は?

私は、ページ名は、」私はこのような何かをする必要があります:

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

質問のスコープは、ページのuniqueNameのようにpageNameを意味するかどうかは不明です。そうであれば、文字列内のobjectidまたは実際のオブジェクトを取得したら、そのオブジェクトからuniqueNameを取得できます。ここで

は、現在のページ 公共のObjectID getCurrentPage(PortletRequest要求、 PortletResponse応答が)StateException、のNamingException、 にIOException { のObjectID OID = NULLをスローのOBJECTIDを取得するためのコードです。 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にあるはずです。それはあなたが探しているuniqueNameですか?それは、XMLではありませんが、あなたはOBJECTIDオブジェクト

+0

はあなたをありがとう回答。実際には私はuniqueNameが必要です。私はあなたのコードを試して、oId.getUniqueName()がnullを返す –

+0

2つのこと、1)は、完全なコードでそれに私のヘルパーを持っているかどうかはわからないnullを飲み込むことができます。 2)確実に定義されていますか?文字列としてobjectidを出力し、xmlaccessでその文字列を検索して何が定義されているかを確認しましたか?派生したページにある可能性があり、親ページではなく、ユニークネームが返されていないと思われます。最初に、OIDが返されます。https://connections.asponte.com/blogs/asppontecom/entry/Portal_8_0_and_8_5_Advanced_URL_Generation_Helper_classes?lang = en_us – Crosstalk22

0

からあなたはこれに類似doViewメソッドを使って、ページID /固有名を取得することができなければならないことを得ることができます。

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(); 
    } 
} 
関連する問題