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]

Reply via email to