Any on this issue?

I'm working with revision 910.


On Sun, May 18, 2008 at 3:17 AM, Samuel Santos <[EMAIL PROTECTED]> wrote:

> I use Stripes 1.5beta and the bug
> http://stripesframework.org/jira/browse/STS-402 still happens.
>
> Using Ben hack to handle the FileUploadLimitExceededException:
> public Resolution handle(FileUploadLimitExceededException exception,
> HttpServletRequest request,
>         HttpServletResponse response) throws ServletException, IOException
> {
>     /*
>      * This is a hack from Ben Gunter received in the Stripes forum. It is
> related to Jira issue:
>      * http://stripes.mc4j.org/jira/browse/STS-402. The problem is that
> when the exception handler is called, it
>      * always receives the original request passed to the StripesFilter and
> not the wrapped request. That prevents
>      * construction of the FlashScope in which we need to store the error
> message.
>      */
>
>     // start of hack
>     // wrap the request without handling multipart data
>     StripesRequestWrapper wrapper = new StripesRequestWrapper(request) {
>         /**
>          * Ignore multipart content and set the locale at the same time.
>          *
>          * @param request the HTTP request to wrap.
>          */
>         @Override
>         protected void constructMultipartWrapper(HttpServletRequest
> request) throws StripesServletException {
>             Locale locale =
> StripesFilter.getConfiguration().getLocalePicker().pickLocale(request);
>             setLocale(locale);
>         }
>     };
>     // end of hack
>
>     // get referer URL
>     URL referer = null;
>     try {
>         referer = new URL(request.getHeader("referer"));
>     } catch (Exception e) {
>         throw exception;
>     }
>
>     // convert referer path to context-relative path
>     String path = referer.getFile();
>     String contextPath = request.getContextPath();
>     if (contextPath.length() > 0) {
>         if (!path.startsWith(contextPath + "/"))
>             throw exception;
>         path = path.replace(contextPath, "");
>     }
>
>     // create action bean and context
>     Configuration config = StripesFilter.getConfiguration();
>     PVoucherActionBeanContext context = (MyActionBeanContext)
> config.getActionBeanContextFactory()
>             .getContextInstance(request, response);
>     ActionBean actionBean =
> config.getActionResolver().getActionBean(context);
>
>     // try to guess the field name
>     String fieldName = ValidationErrors.GLOBAL_ERROR;
>     try {
>         BeanInfo beanInfo =
> Introspector.getBeanInfo(actionBean.getClass());
>         for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
>             if (pd.getPropertyType().equals(FileBean.class)) {
>                 fieldName = pd.getName();
>                 break;
>             }
>         }
>     } catch (Throwable t) {
>     }
>
>     // add validation error
>     DecimalFormat format = new DecimalFormat("0.00");
>     double max = (double) exception.getMaximum() / 1024;
>     double posted = (double) exception.getPosted() / 1024;
>     context.getValidationErrors().add(fieldName,
>             new LocalizableError("error.file.too.large",
> format.format(max), format.format(posted)));
>
>     // redirect back to referer
>     return new RedirectResolution(path).flash(actionBean);
> }
> still crashes when flashing the action bean!
>
> Isn't there a better way to handle this exception with Stripes 1.5?
>
> Cheers,
> Samuel
>
> --
> Samuel Santos
> http://www.samaxes.com/




-- 
Samuel Santos
http://www.samaxes.com/
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft 
Defy all challenges. Microsoft(R) Visual Studio 2008. 
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Stripes-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-users

Reply via email to