получение параметров из дружественных портлетов url jsr 286 - PullRequest
0 голосов
/ 22 декабря 2010

Я использую сервер портала ibm. есть ссылка, которая исходит от внешней ссылки. URL, который идет, как показано ниже http://localhost.us.deloitte.com:10040/wps/myportal/home/gm_assignee_label/gm_eoa_page?invoker=esb?agsnid=32984?asgnmtid=50085

home, gm_assignee_label, gm_eoa_page - это дружественные ссылки на 3 разные страницы. вещи после? являются ключевыми параметрами значения.

Я хочу получить эти параметры, когда нажимаю на ссылку выше, и моя страница загружается.

Я попробовал ссылку ниже, как указано в IBM. но это не помогло мне http://publib.boulder.ibm.com/infocenter/wpzosdoc/v6r1/index.jsp?topic=/com.ibm.wp.zos.doc/dev/pltcom_pubrndrprm.html

мой код portlet.xml такой, как показано ниже

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

Я пытаюсь получить значения в моем методе doView портлета, как показано ниже

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

Но я всегда получаю ноль.

, пожалуйста, помогите.

ТИА, Tejas

Ответы [ 2 ]

1 голос
/ 13 апреля 2012

Не знаю, является ли это лучшим решением, но оно работает.

com.ibm.ws.portletcontainer.portlet.PortletUtils.getHttpServletRequest(request).getParameter("agsnid")
1 голос
/ 22 декабря 2010

URL недействителен.Пары параметров строки запроса должны быть разделены &, а не ?.? является только разделителем между URI запроса и строкой запроса.

Таким образом, ссылка должна быть http://localhost.us.deloitte.com:10040/wps/myportal/home/gm_assignee_label/gm_eoa_page?invoker=esb&agsnid=32984&asgnmtid=50085, чтобы иметь возможность доступа к agsnid и asgnmtidкак параметры запроса.В противном случае они будут частью параметра invoker.

...