You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by robert rowntree <ro...@yahoo.com> on 2004/04/29 19:40:21 UTC

jsp "path" forward using "success" and mapping not working

At the end of a Request from "menu.jsp" im
trying to "loopback" to menu.jsp after 
actionBean updates the FormBean w/ DB querySet.

The reason i want to loopback is to have the menu show
another
section that is based on the "option selected" in a 
drop-down control.

I get as far as an 
exit from the ActionBean's "execute" method, 
having set mapping to "success" before the exception
below

logtrace & struts-config & ActionBean source included
below:

++++++++++++++++++++
stackTrace
++++++++++++++++++++
2004-04-29 08:10:17
StandardContext[/b2bjws]SessionListener:
attributeRemoved('C022C377A506E347E4CA3304F78F570C',
'menuForm', 'com.borneo.beans.MenuForm@baa31b')
2004-04-29 08:10:36
StandardContext[/b2bjws]SessionListener:
attributeAdded('C022C377A506E347E4CA3304F78F570C',
'menuForm', 'com.borneo.beans.MenuForm@11415c8')
2004-04-29 08:10:36 ApplicationDispatcher[/b2bjws]
Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
	at
org.apache.jsp.menu_jsp._jspService(menu_jsp.java:131)
	at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
	at
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
	at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
	at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
	at
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
	at
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
	at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:742)
	at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:506)
	at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:443)
	at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:359)
	at
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
	at
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:274)
	at
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
	at
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:320)
	at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
	at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
	at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
	at
javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
	at
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
	at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
	at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:509)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
	at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:211)
	at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:805)
	at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:696)
	at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)
	at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)
	at java.lang.Thread.run(Thread.java:534)

2004-04-29 08:10:36 StandardWrapperValve[action]:
Servlet.service() for servlet action threw exception
java.lang.NullPointerException
	at
org.apache.jsp.menu_jsp._jspService(menu_jsp.java:131)
	at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
	at
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
	at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
	at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
	at
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
	at
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
	at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:742)
	at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:506)
	at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:443)
	at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:359)
	at
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
	at
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:274)
	at
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
	at
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:320)
	at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
	at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
	at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
	at
javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
	at
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
	at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
	at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:509)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
	at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
	at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:211)
	at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:805)
	at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:696)
	at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)
	at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)
	at java.lang.Thread.run(Thread.java:534)




++++++++++++++++++++
Debug Statements from StrutsAction class
++++++++++++++++++++

2004-04-29 10:14:42,694 [http80-Processor4] DEBUG
org.apache.struts.util.RequestUtils  - Get module name
for path /mnmenu.do
2004-04-29 10:14:42,694 [http80-Processor4] DEBUG
org.apache.struts.util.RequestUtils  - Module name
found: default
2004-04-29 10:14:42,694 [http80-Processor4] INFO 
org.apache.struts.tiles.TilesRequestProcessor  - Tiles
definition factory found for request processor ''.
2004-04-29 10:14:42,694 [http80-Processor4] DEBUG
org.apache.struts.action.RequestProcessor  -
Processing a 'POST' for path '/mnmenu'
2004-04-29 10:14:42,694 [http80-Processor4] DEBUG
org.apache.struts.action.RequestProcessor  -  Setting
user locale 'en_US'
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.struts.util.RequestUtils  -  Looking for
ActionForm bean instance in scope 'session' under
attribute key 'menuForm'
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.struts.util.RequestUtils  -  Recycling
existing ActionForm instance of class
'com.borneo.beans.MenuForm'
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.struts.util.RequestUtils  -  -->
com.borneo.beans.MenuForm@167c5e3
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.struts.action.RequestProcessor  -  Storing
ActionForm bean instance in scope 'session' under
attribute key 'menuForm'
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.struts.action.RequestProcessor  - 
Populating bean properties from this request
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.commons.beanutils.BeanUtils  -
BeanUtils.populate(com.borneo.beans.MenuForm@167c5e3,
{Submit.y=[Ljava.lang.String;@652110,
action=[Ljava.lang.String;@15dc37d,
webappSecurityUser=[Ljava.lang.String;@cd83d8,
Submit.x=[Ljava.lang.String;@8ae59a,
admin_action=[Ljava.lang.String;@e7e8eb})
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.commons.beanutils.BeanUtils  -  
setProperty(com.borneo.beans.MenuForm@167c5e3,
Submit.y, [9])
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.commons.beanutils.BeanUtils  -  
setProperty(com.borneo.beans.MenuForm@167c5e3, action,
[Create])
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.commons.beanutils.ConvertUtils  - Convert
string 'Create' to class 'java.lang.String'
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.commons.beanutils.ConvertUtils  -   Using
converter
org.apache.commons.beanutils.converters.StringConverter@1cb7a1
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.commons.beanutils.BeanUtils  -  
setProperty(com.borneo.beans.MenuForm@167c5e3,
webappSecurityUser, [dogtown])
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.commons.beanutils.ConvertUtils  - Convert
string 'dogtown' to class 'java.lang.String'
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.commons.beanutils.ConvertUtils  -   Using
converter
org.apache.commons.beanutils.converters.StringConverter@1cb7a1
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.commons.beanutils.BeanUtils  -  
setProperty(com.borneo.beans.MenuForm@167c5e3,
Submit.x, [57])
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.commons.beanutils.BeanUtils  -  
setProperty(com.borneo.beans.MenuForm@167c5e3,
admin_action, [viewsubscription])
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.commons.beanutils.ConvertUtils  - Convert
string 'viewsubscription' to class 'java.lang.String'
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.commons.beanutils.ConvertUtils  -   Using
converter
org.apache.commons.beanutils.converters.StringConverter@1cb7a1
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.struts.action.RequestProcessor  - 
Validating input form properties
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.struts.action.RequestProcessor  -   No
errors detected, accepting input
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.struts.action.RequestProcessor  -  Looking
for Action instance for class
com.borneo.beans.ProcessMenuAction
2004-04-29 10:14:42,704 [http80-Processor4] DEBUG
org.apache.struts.action.RequestProcessor  -  
Creating new Action instance
2004-04-29 10:14:42,714 [http80-Processor4] DEBUG
org.apache.struts.webapp.Example  - ProcessMenuAction:
 Processing viewsubscription Create action
2004-04-29 10:14:42,924 [http80-Processor4] DEBUG
org.apache.struts.webapp.Example  -  Forwarding to
success page
2004-04-29 10:14:42,924 [http80-Processor4] DEBUG
org.apache.struts.tiles.TilesRequestProcessor  -
processForwardConfig(/menu.jsp, false)
2004-04-29 10:14:42,934 [http80-Processor4] DEBUG
org.apache.struts.tiles.xmlDefinition.I18nFactorySet 
- Can't open file '/WEB-INF/tiles-defs_en_US.xml'
2004-04-29 10:14:42,934 [http80-Processor4] DEBUG
org.apache.struts.tiles.xmlDefinition.I18nFactorySet 
- Can't open file '/WEB-INF/tiles-defs_en.xml'
2004-04-29 10:14:42,934 [http80-Processor4] DEBUG
org.apache.struts.tiles.TilesRequestProcessor  -  
'/menu.jsp' - processed as uri
2004-04-29 10:14:42,934 [http80-Processor4] DEBUG
org.apache.struts.action.RequestProcessor  -
processForwardConfig(ForwardConfig[name=success,path=/menu.jsp,redirect=false,contextRelative=false])
2004-04-29 10:14:42,974 [http80-Processor4] DEBUG
org.apache.catalina.core.ApplicationDispatcher  -
servletPath=/menu.jsp, pathInfo=null,
queryString=null, name=null
2004-04-29 10:14:42,974 [http80-Processor4] DEBUG
org.apache.catalina.core.ApplicationDispatcher  - 
Path Based Forward
 
++++++++++++++++++
struts-config
++++++++++++++++++
    <form-beans>

    <!-- Subscription form bean -->
    <form-bean      
      name="subscriptionForm"
      type="com.borneo.beans.SubscriptionForm">
    </form-bean>
    <form-bean      
      name="menuForm"
      type="com.borneo.beans.MenuForm">
    </form-bean>

    </form-beans>

<!-- ================================= Global
Exception Definitions -->

    <global-exceptions>

        <!-- sample exception handler

        <exception

            key="expired.password"

            type="app.ExpiredPasswordException"

            path="/changePassword.jsp"/>

        end sample -->

    </global-exceptions>

<!-- =================================== Global
Forward Definitions -->

    <global-forwards>

        <!-- Default forward to "Welcome" action -->

        <!-- Demonstrates using index.jsp to forward
-->

        <forward

            name="welcome"

            path="/Welcome.do"/>

    </global-forwards>

<!-- =================================== Action
Mapping Definitions -->

    <action-mappings>

            <!-- Default "Welcome" action -->

            <!-- Forwards to Welcome.jsp -->
<!--rcr just added attr below-->
        <action

            path="/Welcome"
name="subscriptionForm"
           
type="org.apache.struts.actions.ForwardAction"
 parameter="/Welcome.jsp"
        />
            <!--          
parameter="/pages/Welcome.jsp"/>-->

    <!-- Edit mail subscription -->
        <!--      fixme  type -->
        <action    path="/editSubscription"
          
         
type="org.apache.struts.webapp.example.EditSubscriptionAction"
          name="subscriptionForm"
          scope="session"
          validate="false">
          <forward name="failure"             
path="/Welcome"/>
          <forward name="success"             
path="/subscription.jsp"/>
        </action>
        
        <!-- Save mail subscription -->
        <action    path="/app"
          
         
type="com.borneo.beans.SaveSubscriptionAction"
          name="subscriptionForm"
          scope="session"
          validate="true"
          input="/subscription.jsp">
          <forward name="success"   
path="/Welcome.do"/>
          <forward name="subscription"   
path="/subscription.jsp"/>
          <!--     <forward name="success"        
path="/Welcome"/> -->
        </action>

<!--testing new adm menu-->
        <action    path="/mnmenu"
          
          type="com.borneo.beans.ProcessMenuAction"
          name="menuForm"         
          scope="session"
          validate="true"
          input="/menu.jsp">
          <forward name="success"   
path="/menu.jsp"/>
          <forward name="subscription"   
path="/subscription.jsp"/>
          <!--     <forward name="success"        
path="/Welcome"/> -->
        </action>        

    </action-mappings>

<!-- ===================================== Controller
Configuration -->

    <controller

      
processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>

<!-- ================================ Message
Resources Definitions -->



    <message-resources
parameter="resources.application"/>


<!-- ======================================= Plug Ins
Configuration -->

  <!-- comment following if struts1.0.x -->
  <plug-in
className="org.apache.struts.tiles.TilesPlugin" >
    <set-property property="definitions-config" 
	                 value="/WEB-INF/tiles-defs.xml" />
    <set-property property="moduleAware" value="true"
/>
    <set-property
property="definitions-parser-validate" value="true" />
  </plug-in>

  <!-- end comment if struts1.0.x -->

  <plug-in
className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property
        property="pathnames"
       
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
  </plug-in>

</struts-config>

++++++++++++++++++
ProcessMenuAction.java gets to the end of "execute'
method prior to the exception
++++++++++++++++++

	public ActionForward execute(ActionMapping mapping,
				 ActionForm form,
				 HttpServletRequest request,
				 HttpServletResponse response)
	throws Exception {

	// Extract attributes and parameters we will need
	Locale locale = getLocale(request);
	MessageResources messages = getResources(request);
	HttpSession session = request.getSession();
	MenuForm subform = (MenuForm) form;
	if (subform.getAction() == null )
subform.setAction("Create");
	if (log.isDebugEnabled()) {
		log.debug("ProcessMenuAction:  Processing " 
		+ subform.getAdmin_action() + " "
		+ subform.getAction() + " action");
	}
	
	// stateOfMenu is viewMySubs && Select , 
	//   retreive mySubscriptions from DB if needed
	if 
(subform.getAdmin_action().equalsIgnoreCase("viewsubscription")){
		if (subform.getAction().equalsIgnoreCase("Create") )
{
			subform.setAction("Select");
		    subform.setSubscriptionOptions(
		    	this.getUserTopicSub(
		    		subform.getWebappSecurityUser()

				)
			);
		}
	else subform.setSubscriptionOptions(null); // should
go into a ResetForm Meth??
	}
	
	// Remove the obsolete form bean and current menu
	if (mapping.getAttribute() != null) {
		if ("request".equals(mapping.getScope()))
			request.removeAttribute(mapping.getAttribute());
		else
			session.removeAttribute(mapping.getAttribute());
	}

	// Forward control to the specified success URI
	if (log.isTraceEnabled()) {
		log.trace(" Forwarding to success page");
	}
	return (mapping.findForward("success"));  < -- this
is in the log


	
		
__________________________________
Do you Yahoo!?
Win a $20,000 Career Makeover at Yahoo! HotJobs  
http://hotjobs.sweepstakes.yahoo.com/careermakeover 

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org