2010-12-22 10 views
0

私はibmポータル・サーバーを使用しています。外部リンクからのリンクがあります。来るURLは次の通りです http://localhost.us.deloitte.com:10040/wps/myportal/home/gm_assignee_label/gm_eoa_page?invoker=esb?agsnid=32984?asgnmtid=50085フレンドリーなURLポートレットからパラメーターを取得するjsr 286

家、gm_assignee_label、gm_eoa_pageは3つの異なるページに与えられたフレンドリーなURLです。後のこと?キー値のパラメータです。

私は上記のリンクをクリックして私のページが読み込まれるときにこれらのパラメータを取得したいと思います。

私は以下のリンクをibmの指定に従って試しました。それは私が

String esbAssigneeID = request.getParameter("agsnid"); 

以下しかし、私のように、ポートレットの私のdoViewメソッドの値を取得しようとしています

<?xml version="1.0" encoding="UTF-8"?> 
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" 
    version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" 
    id="com.ibm.faces.portlet.FacesPortlet.8b353a4492"> 
    <portlet> 
     <portlet-name>EndOfAssignmentPortlet</portlet-name> 
     <display-name xml:lang="en">EndOfAssignmentPortlet</display-name> 
     <display-name>EndOfAssignmentPortlet</display-name> 
     <portlet-class>com.ibm.endofassignmentportlet.EndOfAssignmentPortlet</portlet-class> 
     <init-param> 
      <name>com.ibm.faces.portlet.page.view</name> 
      <value>/view/endofassignment/EOASearchAssignment.jsp</value> 
     </init-param> 
     <init-param> 
      <name>wps.markup</name> 
      <value>html</value> 
     </init-param> 
     <init-param> 
      <name>com.sun.faces.portlet.SAVE_REQUEST_SCOPE</name> 
      <value>true</value> 
     </init-param> 
     <expiration-cache>0</expiration-cache> 
     <supports> 
      <mime-type>text/html</mime-type> 
      <portlet-mode>view</portlet-mode> 
      <portlet-mode>EDIT</portlet-mode> 
      <portlet-mode>HELP</portlet-mode> 
     </supports> 
     <supported-locale>en</supported-locale> 
     <resource-bundle> 
      com.ibm.endofassignmentportlet.nl.EndOfAssignmentPortletResource</resource-bundle> 
     <portlet-info> 
      <title>EndOfAssignmentPortlet</title> 
      <short-title>EndOfAssignmentPortlet</short-title> 
      <keywords>EndOfAssignmentPortlet</keywords> 
     </portlet-info> 
     <supported-public-render-parameter>AssigneeID</supported-public-render-parameter> 
     <supported-public-render-parameter>AssignmentID</supported-public-render-parameter> 
     <supported-public-render-parameter>InvokerID</supported-public-render-parameter> 
    </portlet> 

    <default-namespace>http://EndOfAssignmentPortlet/</default-namespace> 
    <public-render-parameter> 
     <identifier>AssigneeID</identifier> 
     <qname xmlns:x="http://localhost.us.deloitte.com:10040/wps/myportal">x:agsnid</qname> 
    </public-render-parameter> 
    <public-render-parameter> 
     <identifier>AssignmentID</identifier> 
     <qname xmlns:x="http://localhost.us.deloitte.com:10040/wps/myportal">x:asgnmtid</qname> 
    </public-render-parameter> 
    <public-render-parameter> 
     <identifier>InvokerID</identifier> 
     <qname xmlns:x="http://localhost.us.deloitte.com:10040/wps/myportal">x:invoker</qname> 
    </public-render-parameter> 
</portlet-app> 

以下のよう http://publib.boulder.ibm.com/infocenter/wpzosdoc/v6r1/index.jsp?topic=/com.ibm.wp.zos.doc/dev/pltcom_pubrndrprm.html

私のportlet.xmlのコードは私を助けていませんでし常にnullになります。

助けてください。

TIA、 Tejas

答えて

1

URLが無効です。クエリ文字列パラメータのペアは、で区切り、?ではありません。 ?は、要求URIと要求クエリ文字列の間のセパレータだけです。

したがって、リクエストパラメータとしてagsnidasgnmtidにアクセスできるように、リンクはhttp://localhost.us.deloitte.com:10040/wps/myportal/home/gm_assignee_label/gm_eoa_page?invoker=esb&agsnid=32984&asgnmtid=50085である必要があります。それ以外の場合は、invokerパラメータの一部になります。

+0

ありがとうございました。私がここで観察したのは、doView()のrequest(RenderRequest)変数を調べたときに、これらの値がoriginalParameterMapにあったということです。私はここからどのように値を取得するのか教えてください。しかし、私はパブリックパラメータでそれらを見つけることができ、request.getParameter( "agsnid")もnullとして来ています。助けてください。 – user265950

1

これが最善の解決策であるかどうかわかりませんが、うまくいきます。

com.ibm.ws.portletcontainer.portlet.PortletUtils.getHttpServletRequest(request).getParameter("agsnid") 
関連する問題