I know this might not be the right place for posting my problem. Probably the
Struts - User forum might be the better place. But I don't get the feeling,
that this issue is the right place for this forum.
Here is a short explanation about my yet unsolved problem:

First of all I use Struts 2.0.14, Tiles 2 and Tomcat 6.0.16.
I have a search form like ...

<s:form action="search">
   <s:textfield name="searchString" value="%{searchString}"/>
   <s:submit />
</s:form>

defined in a form.search.jsp which is included in different pages (actually
I use tiles 2), e.g. welcome.jsp, product.jsp, category.jsp and on the
search.result.jsp as well (which displays the result list).
I have a base action called ForwardAction which does nothing more than
rendering the HTML pages with all the used properties and additionaly put
each HTTP request on a defined stack (e.g. /welcome.action,
/category.action, /product.action, /searchResult.action but not the actually
search itself, cos this is not a "forward"). The definition in struts.xml
looks like

<action name="welcome" class="com.foo.ForwardAction">
   <result type="tiles">welcomePage</result>
</action>

The SearchResultAction extends the ForwardAction and does some additional
work with the search result list (pagination, sorting etc.)

<action name="searchResult" class="com.foo.SearchResultAction">
   <result type="tiles">searchResultPage</result>
</action>

The search action itself is defined as

<action name="search" class="com.foo.SearchAction">
  <result type="redirect-action">searchResult</result>
  <result name="input" type="dispatcher">${referer}</result>
</action>

and searches with the given search term for known products on a database.
Now my problem ...
If a validation error occurs on my search form (a missing search term), the
ValidationInterceptor would intercept the action invocation and would
dispatch/forward to the ${referer} defined as "input" result. My
SearchAction implements the Prepareable interface and set the "referer"
property in my prepare method:

@Override
public void prepare() throws Exception {
   referer = request.getHeader( "Referer" );
   if (referer==null)
      referer = request.getContextPath();
}

If a validation error occurs on my welcome page, the dispatcher should go to
the welcome page (referer = http://localhost:9001/welcome.action). If I have
a validation error on the category page, the dispatcher for the input result
should go to http://localhost:9001/category.action. If I search on my search
result page with the same form and the same search action the input
dispatcher should go to http://localhost:9001/searchResult.action. I think
this is a quite common doing that on a web application.
But I got always the following HTTP 404 error. I reckon this has something
to do with the application server (in my case Tomcat 6.0.16), the
RequestDispatcher (ApplicationRequestDispatcher) and the Servlet context
path. If I use a context path "/" for my web app, the error is the
following.

HTTP Status 404 - //https:/localhost:9001/welcome.action

type Status report

message //https:/localhost:9001/welcome.action

description The requested resource (//https:/localhost:9001/welcome.action)
is not available.

If I use "" as context path, the resource
"/https:/localhost:9001/welcome.action" is not available. If I would return
a "static" URL like /jsp/pages/welcome.jsp the forward works fine. What
could be wrong? Where do I miss the peace of cake?

In my web.xml I have the following filter definition:

<filter>
   <filter-name>struts</filter-name>
  
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
        
<filter-mapping>
   <filter-name>struts</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

Thank You for your help.
-- 
View this message in context: 
http://www.nabble.com/ServletDispatcherResult-%28dispatcher%29-and-forwarding-to-Actions-tp20964129p20964129.html
Sent from the Struts - Dev mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
For additional commands, e-mail: dev-h...@struts.apache.org

Reply via email to