I have tried to write out the resource, but this is troublesome as the
resource is not on the classpath. I think there is a method to get web
resources in servlet 2.5, but i also think that the forward should
work.
The viewable meta-data seems a good feature, but i think it would need
to support a transparent and implicit mechanism to access resources.
Perhaps using reasonable "default" meta-data.
On Mon, Sep 1, 2008 at 1:03 PM, Paul Sandoz <Paul.Sandoz_at_sun.com> wrote:
> Hi,
>
> I have a fix, but i am not entirely happy with it.
>
> It appears that forwarding to a non-JSP resource does not work. Even though
> i can create the dispatcher and call forward. Somewhere internally to the
> Servlet implementation a 404 is returned. If anyone is a servlet expert out
> there perhaps they can shed some light on this.
>
>
> The fix is for the JSP template processor to write out any existing resource
> other than a JSP file and dispatch/forward JSP files. Thus you can add
> images etc and implicitly they will get served as well was explicitly
> reference then in a Viewable, although the model makes no sense in this
> respect. But ideally i would like to forward to servlet and let it write out
> the resource with appropriate meta-data.
>
>
> However, i think template processing is missing the ability in general to
> supply HTTP meta-data and for the viewable to be processed taking into
> account the template meta-data (e.g. precondition checking) before the
> template is written out. I am going to jot down some ideas here so i don't
> loose them:
>
> - If an entity in the ContainerResponse implements
> ContainerResponseFilter then the filter method is executed
> before the ContainerResponse is processed to write out the HTTP
> meta-data and entity.
>
> - Viewable is modified to implement ContainerResponseFilter and the
> filter method resolves the template and handles the meta-data.
> Resolved state is retained on the Viewable instance for writing
> out.
>
> - TemplateProcessor.resolve is modified to take as a parameter
> request meta-data and return meta-data plus
> resolved template path. Such meta-data can be:
>
> - content type
> - content length
> - expires
> - last modified
> - etag
>
> hence static data can be differentiated from dynamic data.
>
> Paul.
>
> Julio Faerman wrote:
>>
>> I am using a simple <img> tag. Also tried the URL directly, should be the
>> same.
>> I would suggest adding an static image to the bookstore sample, like a
>> projetct logo.
>> Returning a new Viewable for the image was my first attempt, but it
>> results in an exception saying it could not find the template.
>>
>> The exception is:
>> java.io.IOException: The template name, line-chart.gif, could not be
>> resolved to the path of a template
>>
>> The code:
>> @Path("/")
>> public class RootResource {
>> @GET
>> public Viewable getJSP(){
>> return new Viewable("index.jsp",""); //This works
>> }
>>
>> @GET
>> @Path("img")
>> @Produces("image/gif")
>> public Viewable getImage(){
>> return new Viewable("line-chart.gif",""); //This does not.
>> Files are
>> in the same directory.
>> }
>> }
>>
>>
>> Thank you for the attention and congrats all, this project is awesome.
>>
>>
>>
>>
>> On Mon, Sep 1, 2008 at 4:17 AM, Paul Sandoz <Paul.Sandoz_at_sun.com> wrote:
>>>
>>> Hi Julio,
>>>
>>> Could you send me an example?
>>>
>>>> I am using implicit JSP Viewables (just like bookstore sample), but i
>>>> don't know how can i reference a static resource (images, styles,
>>>> scripts) from the page.
>>>>
>>> Does the following describe your problem?
>>>
>>> If i have a resource:
>>>
>>> com.foo.Foo
>>>
>>> and an index.jsp in:
>>>
>>> com/foo/Foo/index.jsp
>>>
>>> and there is an image at the location:
>>>
>>> com/foo/Foo/image.png
>>>
>>> how does "index.jsp" reference "image.png".
>>>
>>>
>>>> I am trying a method that fowards to the requested resource, but
>>>> servletContext.getRequestDispatcher().forward() is failling because
>>>> the injected HttpServletRequest and Response are null. Is there a
>>>> better way to do this?
>>>>
>>> If you are using Servlet you should be able to do:
>>>
>>> @Context HttpServletRequest req;
>>>
>>> @Context HttpServletRequest res;
>>>
>>> as fields or method parameters.
>>>
>>> You should be able to reference a static page using a Viewable. Just
>>> return
>>> something like this:
>>>
>>> // Absolute reference
>>> return new Viewable("/static.png", null);
>>>
>>> // Reference relative to the resource class or a super class
>>> return new Viewable("static.png", null);
>>>
>>> Paul.
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>
>
> --
> | ? + ? = To question
> ----------------\
> Paul Sandoz
> x38109
> +33-4-76188109
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>
>