You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by netdawg <ne...@yahoo.com> on 2012/09/23 21:25:49 UTC
RE: t5: adding http header
Wulf: Why (rather how) the @Override annotation ? I actually had to remove
it for it work.
Anyhooo...here is the complete working example (right or wrong, not
sure)...comments welcome...
Step 1. Created a class in your src/main/java -- SERVICES package - where
you will find AppModule.java already installed by Tapestry. In my case, I
created a class called RevalidateHTTPHeader
package org.yourGroupId.yourArtifactId.services;
import java.io.IOException;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.RequestFilter;
import org.apache.tapestry5.services.RequestHandler;
import org.apache.tapestry5.services.Response;
public class RevalidateHTTPHeader implements RequestFilter
{
private static final String CACHE_CTRL = "Cache-Control";
private static final String EXPIRE_DATE = "Exprires";
public boolean service(Request request, Response response, RequestHandler
handler) throws IOException
{
response.setHeader(CACHE_CTRL, "no-cache, no-store, must-revalidate");
response.setHeader(EXPIRE_DATE, "Sun, 07 Dec 1941 07:55:00 GMT");
return handler.service(request, response);
}
}
Step 2. Within AppModule.java, do two things -
a. declare the following member variable
RevalidateHTTPHeader nocache = new RevalidateHTTPHeader();
b. add the following within contributeRequestHandler method:
public void contributeRequestHandler(OrderedConfiguration<RequestFilter>
configuration,
@Local
RequestFilter filter)
{
// Each contribution to an ordered configuration has a name, When
necessary, you may
// set constraints to precisely control the invocation order of the
contributed filter
// within the pipeline.
///////////////////////////////////////////////////////////////
// ADD the custom nocache HTTP header(s)
configuration.add("NoCache", nocache);
//
//////////////////////////////////////////////////////////////
configuration.add("Timing", filter);
}
Step 3: Run Jetty to verify/examine headers - I am using Google Chrome -
which has a free HTTP Headers extension.
http://localhost:8080/yourArtifactId/[yourPage]
Name Extension
Content-Encoding gzip
Exprires Sun, 07 Dec 1941 07:55:00 GMT
Transfer-Encoding chunked
Server Jetty(6.1.26)
Content-Type text/html; charset=utf-8
Cache-Control no-cache, no-store, must-revalidate
--
View this message in context: http://tapestry.1045711.n5.nabble.com/t5-adding-http-header-tp3369097p5716459.html
Sent from the Tapestry - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: t5: adding http header
Posted by netdawg <ne...@yahoo.com>.
Thanks!!
Yep, even though java -version on command line shows 1.6, the Eclipse (right
click) project --> properties --> java compiler shows using "JDK 1.5
compliance". Changed that to 1.6 and sure enough no complaints on the
@Override annotation anymore.
And thanks for that typo catch ;-).
In fact, off-topic, but in case anyone would like to use this code, the
whole expires date can be made redundant by using max-age in the HTTP
request header, per RFC 2616 14.21.
response.setHeader(CACHE_CTRL, "no-cache, no-store, max-age=0,
must-revalidate");
Also see: http://www.mnot.net/blog/2007/05/15/expires_max-age
(this also has a link to an excellent tutorial on caches - must read - basic
message being cache control is probably best handled by web server, if you
can control it, rather than in your application)
--
View this message in context: http://tapestry.1045711.n5.nabble.com/t5-adding-http-header-tp3369097p5716463.html
Sent from the Tapestry - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: t5: adding http header
Posted by Chris Mylonas <ch...@opencsta.org>.
you've got a typo here :)
> private static final String EXPIRE_DATE = "Exprires";
s/Exprires/Expires/g
i haven't tried it but may give it a go l8r, useful looking service!
off topic but [1] seems relevant
there is a jquery prefilter suggestion when using jquery
[1] = http://stackoverflow.com/questions/12506897/is-safari-on-ios-6-caching-ajax-results
On 24/09/2012, at 5:25 AM, netdawg wrote:
> Wulf: Why (rather how) the @Override annotation ? I actually had to remove
> it for it work.
>
> Anyhooo...here is the complete working example (right or wrong, not
> sure)...comments welcome...
>
> Step 1. Created a class in your src/main/java -- SERVICES package - where
> you will find AppModule.java already installed by Tapestry. In my case, I
> created a class called RevalidateHTTPHeader
>
> package org.yourGroupId.yourArtifactId.services;
>
> import java.io.IOException;
>
> import org.apache.tapestry5.services.Request;
> import org.apache.tapestry5.services.RequestFilter;
> import org.apache.tapestry5.services.RequestHandler;
> import org.apache.tapestry5.services.Response;
>
>
> public class RevalidateHTTPHeader implements RequestFilter
> {
>
> private static final String CACHE_CTRL = "Cache-Control";
> private static final String EXPIRE_DATE = "Exprires";
>
> public boolean service(Request request, Response response, RequestHandler
> handler) throws IOException
> {
> response.setHeader(CACHE_CTRL, "no-cache, no-store, must-revalidate");
> response.setHeader(EXPIRE_DATE, "Sun, 07 Dec 1941 07:55:00 GMT");
> return handler.service(request, response);
> }
> }
>
>
> Step 2. Within AppModule.java, do two things -
>
> a. declare the following member variable
>
> RevalidateHTTPHeader nocache = new RevalidateHTTPHeader();
>
> b. add the following within contributeRequestHandler method:
>
> public void contributeRequestHandler(OrderedConfiguration<RequestFilter>
> configuration,
> @Local
> RequestFilter filter)
> {
> // Each contribution to an ordered configuration has a name, When
> necessary, you may
> // set constraints to precisely control the invocation order of the
> contributed filter
> // within the pipeline.
>
> ///////////////////////////////////////////////////////////////
> // ADD the custom nocache HTTP header(s)
>
> configuration.add("NoCache", nocache);
>
> //
> //////////////////////////////////////////////////////////////
>
>
> configuration.add("Timing", filter);
> }
>
> Step 3: Run Jetty to verify/examine headers - I am using Google Chrome -
> which has a free HTTP Headers extension.
> http://localhost:8080/yourArtifactId/[yourPage]
>
> Name Extension
> Content-Encoding gzip
> Exprires Sun, 07 Dec 1941 07:55:00 GMT
> Transfer-Encoding chunked
> Server Jetty(6.1.26)
> Content-Type text/html; charset=utf-8
> Cache-Control no-cache, no-store, must-revalidate
>
>
>
>
>
> --
> View this message in context: http://tapestry.1045711.n5.nabble.com/t5-adding-http-header-tp3369097p5716459.html
> Sent from the Tapestry - User mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
Re: t5: adding http header
Posted by Bob Harner <bo...@gmail.com>.
"probably", not "problem", sorry.
On Sun, Sep 23, 2012 at 3:36 PM, Bob Harner <bo...@gmail.com> wrote:
> If the compiler complained about @Override, you are problem using a
> 1.5 JDK and Wulf (I assume) was using 1.6.
>
> On Sun, Sep 23, 2012 at 3:25 PM, netdawg <ne...@yahoo.com> wrote:
>> Wulf: Why (rather how) the @Override annotation ? I actually had to remove
>> it for it work.
>>
>> Anyhooo...here is the complete working example (right or wrong, not
>> sure)...comments welcome...
>>
>> Step 1. Created a class in your src/main/java -- SERVICES package - where
>> you will find AppModule.java already installed by Tapestry. In my case, I
>> created a class called RevalidateHTTPHeader
>>
>> package org.yourGroupId.yourArtifactId.services;
>>
>> import java.io.IOException;
>>
>> import org.apache.tapestry5.services.Request;
>> import org.apache.tapestry5.services.RequestFilter;
>> import org.apache.tapestry5.services.RequestHandler;
>> import org.apache.tapestry5.services.Response;
>>
>>
>> public class RevalidateHTTPHeader implements RequestFilter
>> {
>>
>> private static final String CACHE_CTRL = "Cache-Control";
>> private static final String EXPIRE_DATE = "Exprires";
>>
>> public boolean service(Request request, Response response, RequestHandler
>> handler) throws IOException
>> {
>> response.setHeader(CACHE_CTRL, "no-cache, no-store, must-revalidate");
>> response.setHeader(EXPIRE_DATE, "Sun, 07 Dec 1941 07:55:00 GMT");
>> return handler.service(request, response);
>> }
>> }
>>
>>
>> Step 2. Within AppModule.java, do two things -
>>
>> a. declare the following member variable
>>
>> RevalidateHTTPHeader nocache = new RevalidateHTTPHeader();
>>
>> b. add the following within contributeRequestHandler method:
>>
>> public void contributeRequestHandler(OrderedConfiguration<RequestFilter>
>> configuration,
>> @Local
>> RequestFilter filter)
>> {
>> // Each contribution to an ordered configuration has a name, When
>> necessary, you may
>> // set constraints to precisely control the invocation order of the
>> contributed filter
>> // within the pipeline.
>>
>> ///////////////////////////////////////////////////////////////
>> // ADD the custom nocache HTTP header(s)
>>
>> configuration.add("NoCache", nocache);
>>
>> //
>> //////////////////////////////////////////////////////////////
>>
>>
>> configuration.add("Timing", filter);
>> }
>>
>> Step 3: Run Jetty to verify/examine headers - I am using Google Chrome -
>> which has a free HTTP Headers extension.
>> http://localhost:8080/yourArtifactId/[yourPage]
>>
>> Name Extension
>> Content-Encoding gzip
>> Exprires Sun, 07 Dec 1941 07:55:00 GMT
>> Transfer-Encoding chunked
>> Server Jetty(6.1.26)
>> Content-Type text/html; charset=utf-8
>> Cache-Control no-cache, no-store, must-revalidate
>>
>>
>>
>>
>>
>> --
>> View this message in context: http://tapestry.1045711.n5.nabble.com/t5-adding-http-header-tp3369097p5716459.html
>> Sent from the Tapestry - User mailing list archive at Nabble.com.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: t5: adding http header
Posted by Bob Harner <bo...@gmail.com>.
If the compiler complained about @Override, you are problem using a
1.5 JDK and Wulf (I assume) was using 1.6.
On Sun, Sep 23, 2012 at 3:25 PM, netdawg <ne...@yahoo.com> wrote:
> Wulf: Why (rather how) the @Override annotation ? I actually had to remove
> it for it work.
>
> Anyhooo...here is the complete working example (right or wrong, not
> sure)...comments welcome...
>
> Step 1. Created a class in your src/main/java -- SERVICES package - where
> you will find AppModule.java already installed by Tapestry. In my case, I
> created a class called RevalidateHTTPHeader
>
> package org.yourGroupId.yourArtifactId.services;
>
> import java.io.IOException;
>
> import org.apache.tapestry5.services.Request;
> import org.apache.tapestry5.services.RequestFilter;
> import org.apache.tapestry5.services.RequestHandler;
> import org.apache.tapestry5.services.Response;
>
>
> public class RevalidateHTTPHeader implements RequestFilter
> {
>
> private static final String CACHE_CTRL = "Cache-Control";
> private static final String EXPIRE_DATE = "Exprires";
>
> public boolean service(Request request, Response response, RequestHandler
> handler) throws IOException
> {
> response.setHeader(CACHE_CTRL, "no-cache, no-store, must-revalidate");
> response.setHeader(EXPIRE_DATE, "Sun, 07 Dec 1941 07:55:00 GMT");
> return handler.service(request, response);
> }
> }
>
>
> Step 2. Within AppModule.java, do two things -
>
> a. declare the following member variable
>
> RevalidateHTTPHeader nocache = new RevalidateHTTPHeader();
>
> b. add the following within contributeRequestHandler method:
>
> public void contributeRequestHandler(OrderedConfiguration<RequestFilter>
> configuration,
> @Local
> RequestFilter filter)
> {
> // Each contribution to an ordered configuration has a name, When
> necessary, you may
> // set constraints to precisely control the invocation order of the
> contributed filter
> // within the pipeline.
>
> ///////////////////////////////////////////////////////////////
> // ADD the custom nocache HTTP header(s)
>
> configuration.add("NoCache", nocache);
>
> //
> //////////////////////////////////////////////////////////////
>
>
> configuration.add("Timing", filter);
> }
>
> Step 3: Run Jetty to verify/examine headers - I am using Google Chrome -
> which has a free HTTP Headers extension.
> http://localhost:8080/yourArtifactId/[yourPage]
>
> Name Extension
> Content-Encoding gzip
> Exprires Sun, 07 Dec 1941 07:55:00 GMT
> Transfer-Encoding chunked
> Server Jetty(6.1.26)
> Content-Type text/html; charset=utf-8
> Cache-Control no-cache, no-store, must-revalidate
>
>
>
>
>
> --
> View this message in context: http://tapestry.1045711.n5.nabble.com/t5-adding-http-header-tp3369097p5716459.html
> Sent from the Tapestry - User mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org