[aerogear-dev] HTML View Responder

Daniel Bevenius daniel.bevenius at gmail.com
Fri Dec 21 09:43:41 EST 2012


Thanks guys!

Just noticed a typo in the post which I've corrected. The default would be
jsp() which is the current default.




On 21 December 2012 15:41, Sebastien Blanc <scm.blanc at gmail.com> wrote:

> +1
>
>
> On Fri, Dec 21, 2012 at 3:39 PM, Lucas Holmquist <lholmqui at redhat.com>wrote:
>
>> +1
>>
>> From a user perspective, i think the route sections looks clean with this
>> approach
>>
>> On Dec 21, 2012, at 9:34 AM, Daniel Bevenius <daniel.bevenius at gmail.com>
>> wrote:
>>
>> Hi,
>>
>> I'm working on AEROGEAR-693<https://issues.jboss.org/browse/AEROGEAR-693> and
>> trying to figure out how to implement this in the best way.
>>
>> At the moment, the default type of ViewResponder is the MvcResponder
>> which forwards to a JSP page. By default, this means that if you do not
>> specify a *produces()* method on a route, this is what you'll get.
>>
>> Now, the media types that are passed to the *produces()* method
>> determine two things: 1. How to match to Route that is the target of a
>> request, matching the HTTP *Accept* header. 2. Determining the
>> ViewResponder to be used.
>>
>> The issue here is that for both a HTMLResponder and a JSPResponder the
>> media type would in both cases be*text/html*.
>> How do we determine which one the users actually has created a view for
>> (jsp or html page)?
>>
>> Well, we need some way to differantiate between a route that will respond
>> with a html view, but which uses a ceratain technique to render the html.
>>
>> How about a introduce a type, MediaType that looks something like this:
>>
>> public class MediaType {
>>
>>     public static final String HTML = "text/html";
>>     public static final String ANY = "*/*";
>>     public static final String JSON = "application/json";
>>
>>     private final String mediaType;
>>     private final Class<? extends Responder> responderClass;
>>
>>     private MediaType(final String mediaType, Class<? extends Responder> responderClass) {
>>         this.mediaType = mediaType;
>>         this.responderClass = responderClass;
>>     }
>>
>>     public String getMediaType() {
>>         return mediaType;
>>     }
>>
>>     public Class<? extends Responder> getResponderClass() {
>>         return responderClass;
>>     }
>>
>>     @Override
>>     public String toString() {
>>         return "MediaType[type=" + mediaType + ", responderClass=" + responderClass + "]";
>>     }
>>
>>     public static MediaType html() {
>>         return new MediaType(HTML, HtmlViewResponder.class);
>>     }
>>
>>     public static MediaType jsp() {
>>         return new MediaType(HTML, JspViewResponder.class);
>>     }
>>
>>     public static MediaType json() {
>>         return new MediaType(JSON, JsonResponder.class);
>>     }
>> }
>>
>> And we could add *html()*, *jsp()*, and *json()* methods to
>> AbstractRoutingModule, so a route that should be handled by a
>> HtmlViewResponder would look like this:
>>
>> route()
>>       .from("/plain")
>>       .on(RequestMethod.GET)
>>       .produces(html())
>>       .to(Html.class).index();
>>
>> To be backward compatible, if a *produces()* method was not specified it
>> would be the same as specifying:
>>
>>       .produces(json())
>>
>>  _______________________________________________
>> aerogear-dev mailing list
>> aerogear-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>
>>
>>
>> _______________________________________________
>> aerogear-dev mailing list
>> aerogear-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>
>>
>
> _______________________________________________
> aerogear-dev mailing list
> aerogear-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/aerogear-dev/attachments/20121221/73b58b65/attachment-0001.html 


More information about the aerogear-dev mailing list