Last updated on
Apr 27, 2021
|
Also applies to ColdFusion
You publish events in the processAction() method of the portlet code by calling setEvent() on the ActionResponse object. This setEvent() method takes two parameters: the QName of the event object and the type of object defined in portlet.xml.
Following is an example of processAction() method.
<cffunction name="processAction" returntype="void" access="public" output="false" hint="Called by the portlet container to allow the portlet to process an action request."> <cfargument name="actionRequest" type="any" required="true" hint="A javax.portlet.ActionRequest java object"> <cfargument name="actionResponse" type="any" required="true" hint="A javax.portlet.ActionResponse java object"> <cfset super.processAction(arguments.actionRequest, arguments.actionResponse)> <!--- send event notification ---> <cftry> <cfset arguments.actionResponse.setEvent("HelloEvent", request.portlet.parameters.event_value)> <cfcatch type="any"> <cflog file="simple-event-portlet" type="error" text="processAction() threw exception: #cfcatch.message#"> </cfcatch> </cftry> </cffunction>
Capture events in processEvent() method:
<cffunction name="processEvent" returntype="void" access="public" output="false" hint="Called by the portlet container requesting the portlet to process a specific event."> <cfargument name="eventRequest" type="any" required="true" hint="A javax.portlet.EventRequest java object"> <cfargument name="eventResponse" type="any" required="true" hint="A javax.portlet.EventResponse java object"> <cfset var e = StructNew()> <cftry> <cfset e.name = arguments.eventRequest.getEvent().getName()> <cfset e.value = arguments.eventRequest.getEvent().getValue()> <cfif NOT IsDefined("application.EventReceivingPortletEvents")> <cfset application.EventReceivingPortletEvents = ArrayNew(1)> </cfif> <cfset ArrayAppend(application.EventReceivingPortletEvents,e)> <cfcatch type="any"> </cfcatch> </cftry> </cffunction>