Hello all,
   I was just looking for this option to override the content-type of the
json result. Is there any fix for this?

  Thanks

JL

2012-12-31 12:41 GMT-05:00 Lukasz Lenart <lukaszlen...@apache.org>:

> 2012/12/30 Burton Rhodes <burtonrho...@gmail.com>:
> > Lukasz -
> >
> > Thanks for all your help.  You got me on the right track and it appears
> the
> > json Result was what was overriding and setting the content type.  As a
> > result, I have overridden the JSONResult class to use the "dynamic"
> > content-Type.
>
> You're welcome :-)
>
> > /**
> >  * Custom json result type to set Content-Type response header
> dynamically
> > to either 'application/json' or 'plain/text'
> >  * according to what the request header identifies in the "Accept" header
> >  *
> >  * (this is to fix browser wanting to download the json response on an
> ajax
> > submit)
> >  *
> >  * @author Burton Rhodes
> >  *
> >  */
> > public class JsonDynamicContentTypeResult extends JSONResult {
> >
> >     private static final Logger LOG =
> > LoggerFactory.getLogger(JsonDynamicContentTypeResult.class);
> >
> >     @Override
> >     public void execute(ActionInvocation invocation) throws Exception {
> >
> >         ActionContext actionContext = invocation.getInvocationContext();
> >         HttpServletRequest request = (HttpServletRequest)
> > actionContext.get(StrutsStatics.HTTP_REQUEST);
> >         HttpServletResponse response = (HttpServletResponse)
> > actionContext.get(StrutsStatics.HTTP_RESPONSE);
> >
> >         // Set Content-Type according to what the request will "accept"
> >         if (request.getHeader("Accept")!=null &&
> > request.getHeader("Accept").toLowerCase().contains("application/json")) {
> >             this.setContentType("application/json");
> >         } else {
> >             // Default to text/plain
> >             this.setContentType("text/plain");
> >         }
> >
> >         try {
> >             Object rootObject;
> >             rootObject = readRootObject(invocation);
> >             writeToResponse(response, createJSONString(request,
> > rootObject), enableGzip(request));
> >         } catch (IOException exception) {
> >             LOG.error(exception.getMessage(), exception);
> >             throw exception;
> >         }
> >     }
> >
> >
> > }
>
> Right now contentType isn't dynamically resolved, please register an
> issue and I'll add such option to JSONResult so you will be able to
> specify contentType via <param/> tag, eg.
>
> <result type="json">
>     <param name="contentType">${resolveContentType}</param>
> </result>
>
> and the action's resolvedContentType method will be called to obtain
> valid contentType
>
>
> Happy New Year :-)
> --
> Ɓukasz
> + 48 606 323 122 http://www.lenart.org.pl/
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
>
>

Reply via email to