Thanks Ate, I was getting null pointer exceptions. I'll subscribe to the other list as well andbuild the struts bridge and see what I can get hold of this time.
I've created my own constants file with an entry for javax.portlet.request. All assistance is very much appreciated. Jonathan > Jonathan, > First of all, I cc'd this to the bridges-user mailing list so we can > continue the discussion there. > (if you haven't subscribed yet: > http://portals.apache.org/bridges/mail-lists.html) > > It is not clear to me *what* is not working with the example you > provided. Do you get an exception/stacktrace or is the > ContainerConstants.PORTLET_REQUEST not set? > > In the latter case, it might be a case of which version of the > struts-bridge you are using. Since august 8, the struts-bridge trunk > now *does* provide the "javax.portlet.request" attribute, even when > accessed from an ActionRequest. See: > http://issues.apache.org/jira/browse/PB-2. > To be able to use it, you need to checkout and build the bridges > yourself. > > If you get an exception, could you please provide that? > > Note: Using ContainerConstants.PORTLET_REQUEST (instead of > "javax.portlet.request") binds you to the jetspeed-commons jar. If you > really want to be JSR-168 compliant, you should *not* use > jetspeed-commons. > > Regards, > > Ate > > > [EMAIL PROTECTED] wrote: >> I am trying integrate a Struts Portlet using Struts Bridge and an >> InterPortlet Communication library, >> http://www.doc.ic.ac.uk/~mo197/portlets/portlet_messaging/crosscontext.php >> , which works well with ordinary portlets. >> >> The library requires that I retrieve the PortletRequest / >> ActionRequest / RenderRequest. However within my Struts Portlet I only >> action and form classes and with execute I only have >> httpServletRequest available. Given that my action classes are running >> within s struts portlet how can I retrieve the PortletRequest that I >> need. >> >> The following code shows a simple portlet that works fine. >> >> public class Portlet1 extends GenericPortlet{ >> >> >> protected void doEdit(RenderRequest request, RenderResponse response) >> throws PortletException, IOException { >> String id = this.getInstanceID(request); >> String msg_session_id = MessageHelper.getSessionID(request); >> MessageHelper.loadPrefs(request, id, msg_session_id); >> MessageUtils.prepareMappingForm(request, id, msg_session_id); >> >> getPortletContext().getRequestDispatcher("/WEB-INF/pages/edit_mappings.jsp").include(request,response);>> } >> >> >> protected void doView(RenderRequest request, RenderResponse response) >> throws PortletException, IOException { >> String id = this.getInstanceID(request); >> String msg_session_id = MessageHelper.getSessionID(request); >> MessageHelper.loadPrefs(request, id, msg_session_id); >> >> response.setContentType("text/html"); >> PrintWriter out = response.getWriter(); >> >> PortletURL aURL = response.createActionURL(); >> aURL.setParameter("ACTION", "sendmsg"); >> >> out.println("<b>Message Session ID:</b> >> "+msg_session_id+"<br/>"); >> out.println("<b>Portlet App:</b> >> "+request.getContextPath()+"<br/>"); >> >> out.println("<b>Portlet1</b>:<br/>"); >> out.println("<a href=\""+aURL+"\">send message</a><br/><br/>"); >> >> MessageHelper msgh = new >> MessageHelper(request.getPortletSession(true), >> id, msg_session_id); >> String msg = (String)msgh.get("a_val"); >> out.println("my a_val msg: "+msg); >> >> } >> >> public void processAction(ActionRequest request, ActionResponse >> response) >> throws PortletException, IOException { >> String id = this.getInstanceID(request); >> String msg_session_id = MessageHelper.getSessionID(request); >> MessageHelper.loadPrefs(request, id, msg_session_id); >> >> >> if (request.getPortletMode().equals(PortletMode.EDIT)) { >> MessageUtils.processMappingForm(request, >> response, id, >> msg_session_id); >> } >> >> if ("sendmsg".equals(request.getParameter("ACTION"))){ >> System.out.println("try sending message from Portlet 1 >> in webapp >> "+request.getContextPath()); >> MessageHelper msgh = new >> MessageHelper(request.getPortletSession(true), >> id, msg_session_id); >> msgh.send("a_val", "this is a message from Portlet1 in >> portlet >> webapp >> "+request.getContextPath()); >> } >> } >> >> public String getInstanceID(PortletRequest request){ >> return "Portlet1."+MessageHelper.getPortletID(request); >> } >> >> >> } >> >> >> Hopefully from that you can see what I am trying to retrieve from >> within my action class. The following is my current execute method >> >> logger = Logger.getLogger("Cedar-Portlets"); >> >> logger.debug("SetURLAction::execute - starting"); >> >> try { >> >> >> ActionRequest actionRequest = (ActionRequest) request >> >> .getAttribute(ContainerConstants.PORTLET_REQUEST); >> String id = this.getInstanceID(actionRequest); >> String msg_session_id = >> MessageHelper.getSessionID(actionRequest); >> MessageHelper.loadPrefs(actionRequest, id, >> msg_session_id); >> MessageHelper msgh = new MessageHelper(actionRequest >> .getPortletSession(true), id, >> msg_session_id); >> msgh.send("a_val", >> "this is a message from SetURLAction in >> portlet webapp " >> + >> actionRequest.getContextPath()); >> >> } catch (RuntimeException e) { >> // TODO Auto-generated catch block >> e.printStackTrace(); >> return mapping.findForward("failure"); >> } >> return mapping.findForward("success"); >> >> >> >> >> Which doesn't work, any ideas would be greatly appreciated. >> >> Jon Hawkins >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> >> >> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]