2010-12-22 2 views
0

Ich benutze ibm Portal Server. Es gibt einen Link, der von einem externen Link kommt. Die URL, die kommt, ist wie folgt: http://localhost.us.deloitte.com:10040/wps/myportal/home/gm_assignee_label/gm_eoa_page?invoker=esb?agsnid=32984?asgnmtid=50085Parameter von freundlichen URL-Portlets erhalten jsr 286

home, gm_assignee_label, gm_eoa_page sind freundliche URLs zu 3 verschiedenen Seiten gegeben. Dinge nach dem? sind die Schlüsselwertparameter.

Ich möchte diese Parameter abrufen, wenn ich auf den obigen Link klicke und meine Seite geladen wird.

Ich habe versucht den folgenden Link wie von ibm gegeben. aber es hat nicht mir helfen http://publib.boulder.ibm.com/infocenter/wpzosdoc/v6r1/index.jsp?topic=/com.ibm.wp.zos.doc/dev/pltcom_pubrndrprm.html

mein portlet.xml Code ist wie unten

<?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> 

Ich versuche, die Werte in meiner doView Methode von Portlet zu erhalten, wie unten

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

Aber ich bekomme immer null.

bitte helfen.

TIA, Tejas

Antwort

1

Die URL ist ungültig. Die Abfragezeichenfolgenparameterpaare sollten durch &, nicht ? getrennt sein. Das ? ist nur das Trennzeichen zwischen dem Anforderungs-URI und der Anforderungsabfragezeichenfolge.

Die Verbindung sollte also eher http://localhost.us.deloitte.com:10040/wps/myportal/home/gm_assignee_label/gm_eoa_page?invoker=esb&agsnid=32984&asgnmtid=50085 sein, um auf agsnid und asgnmtid als Anfrageparameter zugreifen zu können. Andernfalls sind sie Teil des Parameters invoker.

+0

Danke Balus. Was ich hier beobachtet habe ist, dass, als ich die Anfrage (RenderRequest) Variable in doView() inspizierte diese Werte waren in der ursprünglichenParameterMap. Bitte lassen Sie mich wissen, wie ich die Werte von hier abrufen kann. Aber ich könnte sie in öffentlichen Parameter finden und request.getParameter ("agsnid") kommt auch als null. bitte hilfe. – user265950

1

Ich weiß nicht, ob dies die beste Lösung ist, aber es funktioniert.

com.ibm.ws.portletcontainer.portlet.PortletUtils.getHttpServletRequest(request).getParameter("agsnid")