Implementing Navigation within a Portlet You can implement navigation within a

7-22 Oracle Fusion Middleware Developers Guide for Oracle Portal = UrlUtils.emitHiddenField HttpPortletRendererUtil.portletParameterrequest, next_page, htdocspathThesaurusLink.jsp tabletrtd Word of interest: tdtd input type=text size=20 name== qualParamNameQ value= tdtrtable input type=submit name== qualParamNameSubmit Value=Search form center Notice how next_page must be explicitly set to point to ThesaurusLink.jsp. If you do not explicitly set next_page in this way, it defaults to the resource registered in provider.xml, which is ThesaurusForm.jsp. ThesaurusLink.jsp: PortletRenderRequest pRequest = PortletRenderRequest request.getAttributeHttpCommonConstants.PORTLET_RENDER_REQUEST; String paramNameQ = q; String paramNameNextPage = next_page; String qualParamNameQ = HttpPortletRendererUtil.portletParameterpRequest, paramNameQ; String qualParamNameNextPage = HttpPortletRendererUtil.portletParameterpRequest, paramNameNextPage; String paramValueQ = pRequest.getQualifiedParameterparamNameQ; -- Output the HTML content -- center Words similar to = paramValueQ br Click on the link to search for words related to that word. br ul Thesaurus t = new Thesaurus; String[] relatedWords = t.getRelatedWordsparamValueQ; NameValue[] linkParams = new NameValue[2]; linkParams[0] = new NameValue qualParamNameNextPage, htdocspathThesaurusLink.jsp; for int i=0; irelatedWords.length; i++ { linkParams[1] = new NameValue qualParamNameQ, relatedWords[i]; li b = relatedWords[i] b = UrlUtils.constructHTMLLink pRequest, UrlUtils.PAGE_LINK, words related to + relatedWords[i] + , , linkParams, true, Enhancing Java Portlets 7-23 true li } ul a href==XMLUtil.escapeXMLAttribute pRequest.getRenderContext.getPageURL Reset Portlet a center Partial Page Refresh Portlets can refresh themselves without refreshing the entire page. For example, in the multi-page portlet sample, firstpage.jsp uses the API to specifically enable the portlet to link to and display the second page without refreshing the entire portal page. The text in bold in the following example shows how this can be set: page contentType=texthtml;charset=UTF-8 page language=java session=false page import=oracle.portal.provider.v2.url.UrlUtils page import=oracle.portal.provider.v2.render.http.HttpPortletRendererUtil page import=oracle.portal.provider.v2.render.PortletRenderRequest page import=oracle.portal.provider.v2.http.HttpCommonConstants page import=oracle.portal.utils.NameValue PortletRenderRequest prr = PortletRenderRequest request.getAttributeHttpCommonConstants.PORTLET_RENDER_REQUEST; NameValue[] linkParams = new NameValue[1]; linkParams[0] = new NameValueHttpPortletRendererUtil.portletParameterrequest, next_page, htdocsmultipagesecond.jsp; center Hello, this is the first pagep =UrlUtils.constructHTMLLinkprr, UrlUtils.REFRESH_LINK, second page, , linkParams, true, true center

7.2.3.4 Submitting Events

In the previous section, you created a portlet that received parameters. Now you will create a portlet that passes parameters and events to other portlets on the same page or a different page. Some portlets, like the Simple Parameter Form in OmniPortlet, provide an easy, declarative interface to create a simple form to pass parameters to other portlets. If you want complete control over the events passed and the look of your portlet, though, you can add events to your Java portlet. The Portlet Wizard does not create all of the code needed to pass parameters to other portlets. The wizard updates the tags in provider.xml and requires that you add the necessary business logic to your JSP code. To create a portlet that uses events, you perform the following tasks: ■ Create a new portlet with the Portlet Wizard. ■ Add code to your JSP page. ■ Map this portlets parameters to the portlet you created in Section 7.2.3.2, Adding Public Parameters . 7-24 Oracle Fusion Middleware Developers Guide for Oracle Portal Creating an Events Portlet To create an events portlet, perform the following steps: 1. Create a new portlet called MyEventsPortlet in the same provider you used for the parameter portlet in Section 7.2.3.2, Adding Public Parameters by invoking the Portlet Wizard Figure 7–6 . Go through the wizard as normal. In step 5 of the wizard, create a parameter. In step 6 of the wizard, enter the information shown in Table 7–1 . Figure 7–6 Public Portlet Events Page of Portlet Wizard The wizard generates the following code in provider.xml: showDetailsfalseshowDetails inputParameter class=oracle.portal.provider.v2. DefaultParameterDefinition nameMyParamname displayNameMy ParameterdisplayName inputParameter event class=oracle.portal.provider.v2.DefaultEventDefinition nameMyEventname displayNameMy EventdisplayName parameter class=oracle.portal.provider.v2.DefaultParameterDefinition nameMyParamname displayNameMy ParameterdisplayName parameter event Table 7–1 Events Events Area Name Display Name Description Events Exposed MyEvent My Event This is my event. Parameters Associated MyParam My Parameter This is my parameter Note: In the following example, notice that the input parameter and the event parameter have the same name, MyParam. They are two different parameters, even though they have the same name. Enhancing Java Portlets 7-25 renderer class=oracle.portal.provider.v2.render.RenderManager For more information on the syntax of provider.xml, refer to the provider Javadoc on OTN: http:www.oracle.comtechnologyproductsiasportalhtmljavadocx ml_tag_reference_v2.html 2. Import the following necessary classes into MyEventsPortlet: ■ oracle.portal.provider.v2.event.EventUtils ■ oracle.portal.utils.NameValue ■ oracle.portal.provider.v2.url.UrlUtils 3. In MyEventsPortlet, add a link that passes the parameter value to another portlet. As shown in the following sample code, you receive the same page parameter as the previous portlet, but in addition you create a link that passes an event as well: page contentType=texthtml; charset=windows-1252 import=oracle.portal.provider.v2.render.PortletRenderRequest import=oracle.portal.provider.v2.http.HttpCommonConstants import=oracle.portal.provider.v2.ParameterDefinition import=oracle.portal.provider.v2.event.EventUtils import=oracle.portal.utils.NameValue import=oracle.portal.provider.v2.url.UrlUtils PortletRenderRequest pReq = PortletRenderRequest request.getAttributeHttpCommonConstants.PORTLET_RENDER_REQUEST; NameValue[] parameters = new NameValue[2]; parameters[0] = new NameValue EventUtils.eventNameMyEvent,; parameters[1] = new NameValueEventUtils.eventParameterMyParam,pReq.getParameter MyParam; span class=portletText1br a href== UrlUtils.constructLink pReq, pReq.getRenderContext.getEventURL, parameters , true, true The value of the stock is = pReq.getParameterMyParam a brbrspan 4. Add the portlet to a different page in the same page group than the previous portlet the Parameter Portlet. Expand the portlet and wire it to receive the same parameter as the previous portlet. My Parameter = Page Parameter MyParameter 5. Apply your changes on the Parameter tab and go to the Events tab. Expand the Event portlet and select the event. Select Go to Page and find the page to which Note: This sample code does not handle NULL values. When the portlet is initially added to the page, you may receive an error, but, after wiring the portlet to the page parameter, it should work fine.