users@jersey.java.net

[Jersey] Re: How would I implement a messagebodywriter that uses templates based on resource name?

From: Ransom Briggs <ransom-briggs_at_uiowa.edu>
Date: Thu, 8 Sep 2011 09:10:29 -0500

Thanks for the ideas, either one will probably work.

As a side note, I found some of the implicit viewable functionality
confusing and just thought I would share what I think would be helpful
for others. I had annotated my implicit action with @GET, not
realizing that it would cause the implicit view not to work. Also,
the most helpful doc I found for implicit views was
http://blogs.oracle.com/sandoz/entry/mvcj

Thanks,
Ransom

On Wed, Sep 7, 2011 at 4:25 PM, Martin Matula <martin.matula_at_oracle.com> wrote:
> ..or you can still use the implicit viewables and call the index method on
> the resource passed in ${it} from the JSP template.
>
> On 7.9.2011 16:16, Martin Matula wrote:
>>
>> Hi Ransom,
>> You can still use Viewables, just not the implicit ones. You can write a
>> code like this:
>>
>> @Path("/foo")
>> public class FooResource {
>>    @GET
>>    @Produces("application/json")
>>    public List<FooDto>  index() {
>>        FooDto foo = new FooDto();
>>        List<FooDto>  foos = new ArrayList<FooDto>();
>>        return foos;
>>    }
>>
>>    @GET
>>    @Produces("text/html")
>>    public Viewable indexHtml() {
>>        return new Viewable("index", index());
>>    }
>>  }
>>
>> Regards,
>> Martin
>>
>> On 6.9.2011 22:14, Ransom Briggs wrote:
>>>
>>> Hello,
>>>
>>> After fighting with ImplicitViewables for a morning, I'm finding that
>>> they are not really working for my use case.  What I am trying to
>>> accomplish is serving up JSON and HTML from the same action.  I am
>>> trying to keep the resources simple, so I have something like this
>>> right now, where actions return the entity that should be served as
>>> both JSON and HTML.
>>>
>>> @Path("/foo")
>>> @Produces({"application/json", "text/html"})
>>> public class FooResource {
>>>     @GET
>>>     public List<FooDto>  index() {
>>>         FooDto foo = new FooDto();
>>>         List<FooDto>  foos = new ArrayList<FooDto>();
>>>         return foos;
>>>     }
>>> }
>>>
>>> I was going to write a MessageBodyWriter that could serialize to HTML,
>>> but I could not figure out how to access the resource instance, which
>>> I need so I could use templates to defined different HTML views for
>>> different actions.  Ideally, my code would result in something like
>>> ImplicitViewables where the template would be found in
>>> FooResource/index.jsp, except instead of ${it} being the resource, it
>>> would the entity that the method returned.
>>>
>>> Thanks,
>>> Ransom
>