Thank you so much for you help. Yes, we do want the other action to execute before reaching the jsp ... as i was refactoring the code, i read your next response, and yes, the "chain" result is exactly the fix for me. I think action chaining is in general frowned on, but for my initial login, i think it fits perfectly. Again, thanks for you time looking at it!
On 1/15/08, Nils-Helge Garli Hegvik <[EMAIL PROTECTED]> wrote: > > I just realized that the proposed solution won't do what you want it > to do either, since you obviously want the other action to run before > the jsps are dispatched... So, you either have to re-structure your > code a bit and invoke the other actions directly (either manually or > by specifying it as the default action in portlet.xml), or you could > try playing with the "chain" result to see if that does the trick. > > Nils-H > > On Jan 15, 2008 11:32 PM, Nils-Helge Garli Hegvik <[EMAIL PROTECTED]> > wrote: > > I think I have figured out the problem. The problem is that > > "redirectAction" doesn't really do what you think it does, not when > > used in the render phase. I should probably implement a check for > > this, as you can't do a sendRedirect in a portlet. "redirectAction" in > > a portlet should only be used after executing an action in the action > > phase (I need to document this....). So...with that in mind, you > > should change your configuration: > > > > struts.xml > > > > <action name="index" > > class="com.cerner.healthe.health.management.vitals.action.IndexAction"> > > <result name="advisor">/WEB-INF/view/advisor.jsp</result> > > <result name="consumer">/WEB-INF/view/consumer.jsp</result> > > </action> > > > > Then make sure you use the "redirectAction" result type only when your > > action has been executed in the action phase (form submit, or s:url > > created with the attribute 'portletUrlType' set to 'action'). > > > > Hope that made sense... > > > > Nils-H > > > > > > On Jan 15, 2008 8:45 PM, Brian Relph <[EMAIL PROTECTED]> wrote: > > > I have debugged through my own code, but not too deeply through the > struts2 > > > code. I did notice when running it with struts 2.0.11, that there was > a > > > warning that the actionMapper property of the > PortletActionRedirectResult > > > was not set b/c the bean could not be found. > > > > > > Would something in the web.xml affect it? I noticed in the portlet > > > archetype, that it is empty. I have included that as well. > > > > > > > > > portlet.xml > > > ---------------- > > > <?xml version="1.0" encoding="UTF-8"?> > > > > > > <portlet-app version="1.0" xmlns= > > > http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd xmlns:xsi= > > > http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation=" > > > http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd > > > http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" > > > id="healthehealthmanagementvitals"> > > > > > > <portlet id="HealtheHealthManagementVitals"> > > > > > > <description xml:lang="EN"> > > > Healthe Health Management Vitals Portlet > > > </description> > > > > > > <portlet-name>HealtheHealthManagementVitals</portlet-name> > > > > > > <display-name > xml:lang="EN">HealtheHealthManagementVitals</display-name> > > > > > > <portlet-class> > > > org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher > > > </portlet-class> > > > > > > <!-- The namespace for the actions configured for view mode --> > > > <init-param> > > > <name>viewNamespace</name> > > > <value>/view</value> > > > </init-param> > > > > > > <!-- The default action to invoke in view mode. --> > > > <init-param> > > > <name>defaultViewAction</name> > > > <value>index</value> > > > </init-param> > > > > > > <expiration-cache>0</expiration-cache> > > > > > > <supports> > > > <mime-type>text/html</mime-type> > > > <portlet-mode>view</portlet-mode> > > > </supports> > > > > > > <supported-locale>en</supported-locale> > > > > > > <portlet-info> > > > <title>Healthe Health Management Vitals Portlet</title> > > > <short-title>HealtheHealthManagementVitals</short-title> > > > <keywords>struts > 2,portlet,healthe,health,management,vitals</keywords> > > > </portlet-info> > > > > > > <security-role-ref> > > > <role-name>Role_Consumers</role-name> > > > </security-role-ref> > > > > > > </portlet> > > > > > > </portlet-app> > > > > > > > > > web.xml > > > ------------ > > > > > > <?xml version="1.0" encoding="UTF-8"?> > > > <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web > > > Application 2.3//EN" > > > "http://java.sun.com/dtd/web-app_2_3.dtd"> > > > <web-app id="healthe-health-management-vitals"> > > > > > > <display-name>healthe-health-management-vitals-war</display-name> > > > > > > <context-param> > > > <param-name>contextConfigLocation</param-name> > > > <param-value>/WEB-INF/applicationContext*.xml</param-value> > > > </context-param> > > > > > > <listener> > > > <listener-class> > > > org.springframework.web.context.ContextLoaderListener > > > </listener-class> > > > </listener> > > > > > > <welcome-file-list> > > > <welcome-file>index.html</welcome-file> > > > <welcome-file>index.htm</welcome-file> > > > <welcome-file>index.jsp</welcome-file> > > > </welcome-file-list> > > > > > > <security-constraint id="SecurityConstraint_1"> > > > <web-resource-collection id="WebResourceCollection_1"> > > > <web-resource-name>Healthe Health Management > Vitals</web-resource-name> > > > <url-pattern>/HealtheHealthManagementVitals/*</url-pattern> > > > </web-resource-collection> > > > <auth-constraint id="AuthConstraint_1"> > > > <role-name>Role_Consumers</role-name> > > > </auth-constraint> > > > </security-constraint> > > > > > > <security-role> > > > <role-name>Role_Consumers</role-name> > > > </security-role> > > > > > > </web-app> > > > > > > > > > > > > On 1/15/08, Nils-Helge Garli Hegvik <[EMAIL PROTECTED]> wrote: > > > > > > > > Hm.... I usually experience this behaviour when the JSPs aren't > > > > found... Other than that, redirectAction runs just fine in my sample > > > > applications. Have you tried launching in debug mode and step > through > > > > the code? Can you show your portlet.xml file? > > > > > > > > Nils-H > > > > > > > > On Jan 15, 2008 7:58 PM, Brian Relph <[EMAIL PROTECTED]> wrote: > > > > > My WEB-INF/index.jsp is used so that i can use the same > installation as > > > > both > > > > > a portlet and a servlet. Websphere comes with an embedded portlet > > > > container > > > > > as well as a servlet that can serve portlets as servlets, so i can > > > > install > > > > > my webapp a single time and have it accessible both in and out of > my > > > > portal. > > > > > > > > > > I may have led you astray by including that file in my post - the > > > > redirect > > > > > from there is working fine. I am testing using the > JettyPlutoLauncher > > > > class > > > > > and the maven-pluto-plugin / maven-jetty-plugin. When accessing > my > > > > portlet > > > > > at http://localhost/portlet/view/index, control goes into my index > > > > action > > > > > and i return "consumer" - the logs show: > > > > > > > > > > 5227707 [btpool0-1] DEBUG > > > > > > org.springframework.beans.factory.support.DefaultListableBeanFactory - > > > > Bean > > > > > 'org.apache.struts2.portlet.result.PortletActionRedirectResult' > > > > instantiated > > > > > via constructor [public > > > > > org.apache.struts2.portlet.result.PortletActionRedirectResult()] > > > > > 5227722 [btpool0-1] DEBUG > > > > > com.opensymphony.xwork2.interceptor.I18nInterceptor - after > Locale=en_US > > > > > 5227722 [btpool0-1] DEBUG > > > > > com.opensymphony.xwork2.interceptor.I18nInterceptor - intercept } > > > > > > > > > > but the page remains blank. > > > > > > > > > > If i instead access http://localhost/portlet/pluto/index.jsp, > again, > > > > control > > > > > goes into my index action, i return "consumer" and the logs show: > > > > > > > > > > 316389 [btpool0-1] DEBUG > > > > > > org.springframework.beans.factory.support.DefaultListableBeanFactory - > > > > Bean > > > > > 'org.apache.struts2.portlet.result.PortletActionRedirectResult' > > > > instantiated > > > > > via constructor [public > > > > > org.apache.struts2.portlet.result.PortletActionRedirectResult()] > > > > > 5316389 [btpool0-1] DEBUG > > > > org.apache.struts2.portlet.result.PortletResult - > > > > > Executing result in Render phase > > > > > 5316389 [btpool0-1] DEBUG > > > > org.apache.pluto.internal.impl.PortletEntityImpl - > > > > > Retrieved cross context: [EMAIL PROTECTED] > > > > > > > > > > /portlet,file:/C:/workspaces/hin-portal-test/healthe-health-management-vitals/src/main/webapp/} > > > > > 5316389 [btpool0-1] DEBUG > > > > org.apache.struts2.portlet.result.PortletResult - > > > > > Location: /view/consumerView.action > > > > > 5316389 [btpool0-1] DEBUG > > > > > org.apache.pluto.internal.impl.PortletContextImpl- > > > > > PortletRequestDispatcher requested: /view/consumerView.action > > > > > 5316389 [btpool0-1] DEBUG > > > > > org.apache.pluto.internal.impl.PortletRequestDispatcherImpl - > Named > > > > > dispatcher created. > > > > > 5316389 [btpool0-1] DEBUG > > > > > org.apache.pluto.internal.impl.PortletRequestDispatcherImpl - > Request > > > > > dispatcher created. > > > > > 5316389 [btpool0-1] DEBUG > > > > org.apache.pluto.internal.impl.RenderRequestImpl - > > > > > Render request's included mode: true > > > > > 5316389 [btpool0-1] DEBUG > > > > org.apache.pluto.internal.impl.RenderRequestImpl - > > > > > No query string appended to the included request. > > > > > 5316405 [btpool0-1] WARN > com.opensymphony.xwork2.ognl.OgnlValueStack - > > > > Could > > > > > not find property > > > > > > > > > > [Pluto_/portlet.HealtheHealthManagementVitals!_org.mortbay.jetty.included] > > > > > 5316405 [btpool0-1] DEBUG > > > > org.apache.pluto.internal.impl.RenderRequestImpl - > > > > > Render request's included mode: false > > > > > 5316405 [btpool0-1] DEBUG > > > > > com.opensymphony.xwork2.interceptor.I18nInterceptor - after > Locale=en_US > > > > > 5316405 [btpool0-1] DEBUG > > > > > com.opensymphony.xwork2.interceptor.I18nInterceptor - intercept } > > > > > 5316405 [btpool0-1] DEBUG > > > > > org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher - Leaving > render > > > > > 5316405 [btpool0-1] DEBUG > org.apache.pluto.core.PortletContainerImpl - > > > > > Portlet Container [Pluto Portal Driver]: Portlet rendered for: > > > > > HealtheHealthManagementVitals > > > > > 5316405 [btpool0-1] DEBUG > > > > > org.apache.pluto.driver.tags.PortletModeAnchorTag- Evaluated > portletId > > > > > to: /portlet.HealtheHealthManagementVitals! > > > > > 5316405 [btpool0-1] DEBUG > > > > > org.apache.pluto.driver.tags.PortletModeAnchorTag- Testing if > > > > > PortletWindowConfig [/portlet.HealtheHealthManagementVitals!] > > > > > supports mode [view] > > > > > 5316405 [btpool0-1] DEBUG > > > > > org.apache.pluto.driver.tags.PortletModeAnchorTag- Evaluated > portletId > > > > > to: /portlet.HealtheHealthManagementVitals! > > > > > 5316405 [btpool0-1] DEBUG > > > > > org.apache.pluto.driver.tags.PortletModeAnchorTag- Testing if > > > > > PortletWindowConfig [/portlet.HealtheHealthManagementVitals!] > > > > > supports mode [edit] > > > > > 5316405 [btpool0-1] INFO > > > > > > org.apache.pluto.driver.services.impl.resource.SupportedModesServiceImpl- > > > > > Portlet mode 'edit' not found for portletId: > > > > > '/portlet.HealtheHealthManagementVitals!' > > > > > 5316405 [btpool0-1] DEBUG > > > > > org.apache.pluto.driver.tags.PortletModeAnchorTag- Evaluated > portletId > > > > > to: /portlet.HealtheHealthManagementVitals! > > > > > 5316405 [btpool0-1] DEBUG > > > > > org.apache.pluto.driver.tags.PortletModeAnchorTag- Testing if > > > > > PortletWindowConfig [/portlet.HealtheHealthManagementVitals!] > > > > > supports mode [help] > > > > > 5316405 [btpool0-1] INFO > > > > > > org.apache.pluto.driver.services.impl.resource.SupportedModesServiceImpl- > > > > > Portlet mode 'help' not found for portletId: > > > > > '/portlet.HealtheHealthManagementVitals!' > > > > > 5316405 [btpool0-1] DEBUG > > > > > org.apache.pluto.driver.tags.PortletWindowStateAnchorTag - > Evaluated > > > > > portletId to: /portlet.HealtheHealthManagementVitals! > > > > > 5316405 [btpool0-1] DEBUG > > > > > org.apache.pluto.driver.tags.PortletWindowStateAnchorTag - Testing > if > > > > > PortletWindowConfig [/portlet.HealtheHealthManagementVitals!] > supports > > > > > window state [minimized] > > > > > 5316405 [btpool0-1] DEBUG > > > > > org.apache.pluto.driver.tags.PortletWindowStateAnchorTag - > Evaluated > > > > > portletId to: /portlet.HealtheHealthManagementVitals! > > > > > 5316405 [btpool0-1] DEBUG > > > > > org.apache.pluto.driver.tags.PortletWindowStateAnchorTag - Testing > if > > > > > PortletWindowConfig [/portlet.HealtheHealthManagementVitals!] > supports > > > > > window state [maximized] > > > > > 5316405 [btpool0-1] DEBUG > > > > > org.apache.pluto.driver.tags.PortletWindowStateAnchorTag - > Evaluated > > > > > portletId to: /portlet.HealtheHealthManagementVitals! > > > > > 5316405 [btpool0-1] DEBUG > > > > > org.apache.pluto.driver.tags.PortletWindowStateAnchorTag - Testing > if > > > > > PortletWindowConfig [/portlet.HealtheHealthManagementVitals!] > > > > > supports window state [normal] > > > > > In this case, the Pluto portal is shown with a portlet that has no > > > > content. > > > > > (the body div is completely empty, but the head div does have the > > > > portlet > > > > > name). > > > > > > > > > > As well, consumerView.action render result does not pass control > into > > > > the > > > > > action itself. > > > > > > > > > > > > > > > > > > > > On 1/15/08, Nils-Helge Garli Hegvik <[EMAIL PROTECTED]> wrote: > > > > > > > > > > > Are you running this in a portlet container? Your index.jsp and > the > > > > > > redirect url does not make sense i a portal server (unless you > are > > > > > > embedding it in some way....)? Please provide some more > information. > > > > > > > > > > > > Nils-H > > > > > > > > > > > > On Jan 15, 2008 6:38 PM, Brian Relph <[EMAIL PROTECTED]> wrote: > > > > > > > I am having trouble getting a redirectAction to work. I am > using > > > > > > > struts2-portlet-plugin-2.1.1-SNAPSHOT, i have also tried using > > > > > > > struts-2.0.11with no luck. Any advice? Here are my configs: > > > > > > > > > > > > > > WEB-INF/index.jsp > > > > > > > ---------------------------- > > > > > > > <% > > > > > > > String redirectURL = "view/index.action"; > > > > > > > response.sendRedirect(redirectURL); > > > > > > > %> > > > > > > > > > > > > > > > > > > > > > struts.xml > > > > > > > --------------- > > > > > > > <struts> > > > > > > > > > > > > > > <include file="struts-portlet-default.xml" /> > > > > > > > > > > > > > > <package name="default" extends="struts-portlet-default" > > > > > > namespace="/view"> > > > > > > > > > > > > > > <action name="index" class=" > > > > > > > com.health.management.vitals.action.IndexAction"> > > > > > > > <result name="advisor" type="redirectAction"> > > > > > > > <param name="actionName">advisorView</param> > > > > > > > </result> > > > > > > > <result name="consumer" type="redirectAction"> > > > > > > > <param name="actionName">consumerView</param> > > > > > > > </result> > > > > > > > </action> > > > > > > > > > > > > > > <action name="advisorView" class=" > > > > > > > com.health.management.vitals.action.AdvisorViewAction"> > > > > > > > <result>/WEB-INF/view/advisor.jsp</result> > > > > > > > </action> > > > > > > > > > > > > > > <action name="consumerView" class=" > > > > > > > com.health.management.vitals.action.ConsumerViewAction"> > > > > > > > <result>/WEB-INF/view/consumer.jsp</result> > > > > > > > </action> > > > > > > > > > > > > > > </package> > > > > > > > > > > > > > > </struts> > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > 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] > >