Hi Samuel,

Stripes does not throw 404 error automatically.
The second url (/Home.action123) is not filtered by Stripes as you guessed.

For the first url (/Home123.action), Stripes' DefaultExceptionHandler
throws ServletException (status 500 IIRC).
So you should add another <error-page /> element for error-code 500 to 
your web.xml.

--
For the issue #2, have you tried adding ERROR dispatcher to your JSP
filter mapping?

<filter-mapping>
     <filter-name>StripesSecurityFilter</filter-name>
     <url-pattern>*.jsp</url-pattern>
     <dispatcher>REQUEST</dispatcher>
     <dispatcher>INCLUDE</dispatcher>
     <dispatcher>ERROR</dispatcher>
</filter-mapping>

Regards,
Iwao

Samuel Santos wrote on 08.3.28 9:56 AM:
> I detected that some issues still persist in the last Stripes version 
> (trunk) when working with Sitemesh.
> 
> The best way to describe the issues is with some examples, which are 
> hereinafter.
> 
> In Sitemesh's /decorators.xml/ file I exclude my error page:
> <excludes>
>     <pattern>/WEB-INF/error.jsp*</pattern>
>     [...]
> </excludes>
> 
> I've configured Sitemesh and Stripes filters like:
> [...]
> <context-param>
>     <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
>     <param-value>StripesResources</param-value>
> </context-param>
> 
> [...]
> 
> <filter>
>     <filter-name>Sitemesh</filter-name>
>     
> <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
> </filter>
> 
> <filter>
>     <description>
>         Provides essential configuration and request processing services 
> for the Stripes framework.
>     </description>
>     <display-name>Stripes Security Filter</display-name>
>     <filter-name>StripesSecurityFilter</filter-name>
>     
> <filter-class>net.sourceforge.stripes.security.controller.StripesSecurityFilter</filter-class>
>     [...]
> </filter>
> 
> <filter-mapping>
>     <filter-name>Sitemesh</filter-name>
>     <url-pattern>*.action</url-pattern>
> </filter-mapping>
> 
> <filter-mapping>
>     <filter-name>StripesSecurityFilter</filter-name>
>     <url-pattern>*.jsp</url-pattern>
>     <dispatcher>REQUEST</dispatcher>
>     <dispatcher>INCLUDE</dispatcher>
> </filter-mapping>
> 
> <filter-mapping>
>     <filter-name>StripesSecurityFilter</filter-name>
>     <servlet-name>StripesDispatcher</servlet-name>
>     <dispatcher>REQUEST</dispatcher>
>     <dispatcher>FORWARD</dispatcher>
> </filter-mapping>
> 
> <servlet>
>     <servlet-name>StripesDispatcher</servlet-name>
>     
> <servlet-class>net.sourceforge.stripes.controller.DispatcherServlet</servlet-class>
>     <load-on-startup>1</load-on-startup>
> </servlet>
> 
> <servlet-mapping>
>     <servlet-name>StripesDispatcher</servlet-name>
>     <url-pattern>*.action</url-pattern>
> </servlet-mapping>
> 
> [...]
> 
> <error-page>
>     <error-code>404</error-code>
>     <location>/WEB-INF/error.jsp?httpError=404</location>
> </error-page>
> [...]
> (I'm not mapping *.jsp files in Sitemesh but the result is exactly the 
> same.)
> 
> Now, issue #1.
> When some exceptions are throw, the error page is decorated by Sitemesh 
> despite the fact that I've excluded it in the /decorators.xml/ file.
> 
> Example:
> If I try to call an action that doesn't exist, let's say /Home123.action 
> I get the following error:
> ERROR [DefaultExceptionHandler] Could not locate an ActionBean that is 
> bound to the URL [/Home123.action]. Commons reasons for this include 
> mis-matched URLs and forgetting to implement ActionBean in your class. 
> Registered ActionBeans are: [...]
> and the page is decorator by Sitemesh, but if I call /Home.action123 I'm 
> forwarded to the error page with a 404 error and the page isn't 
> (correctly) decorated by Sitemesh.
> 
> A solution for this but a very ugly workaround is to do:
> <c:choose>
>     <c:when test="${empty requestScope.__sitemesh__filterapplied}">
>         [...]
>     </c:when>
>     <c:otherwise>
>         [...]
>     </c:otherwise>
> </c:choose>
> Any suggestion?
> 
> Ok, now issue #2.
> Taking the example of the 404 error. The error description showed in the 
> error page is in the wrong Locale, probably because the request isn't 
> being filtered by Stripes filter.
> Another very ugly solution for this is to make the error description 
> external and include it with <c:import>, note the 
> <dispatcher>INCLUDE</dispatcher> in the *.jsp mapping.
> 
> Any clean solutions for this?
> 
> Cheers
> 
> -- 
> Samuel Santos
> http://samaxes.com/


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Stripes-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-users

Reply via email to