3232import com .sun .webui .jsf .util .JavaScriptUtilities ;
3333import com .sun .webui .jsf .util .RenderingUtilities ;
3434import com .sun .webui .jsf .util .ThemeUtilities ;
35+ import java .text .SimpleDateFormat ;
36+ import java .util .Date ;
37+ import java .util .Locale ;
38+ import javax .servlet .http .HttpServletResponse ;
3539
3640/**
3741 * <p>Renderer for a {@link Head} component.</p>
@@ -44,6 +48,9 @@ public class HeadRenderer extends AbstractRenderer {
4448 */
4549 private static final String stringAttributes [] = {"profile" }; //NOI18N
4650
51+ private static final String DATE_ONE =
52+ (new SimpleDateFormat ("EEE, dd MMM yyyy HH:mm:ss zzz" , Locale .US )).format (new Date (1 ));
53+
4754 /**
4855 * <p>Render the appropriate element start, depending on whether the
4956 * <code>for</code> property is set or not.</p>
@@ -86,6 +93,14 @@ protected void renderAttributes(FacesContext context, UIComponent component,
8693 // Meta tags
8794 if (head .isMeta ()) {
8895 writer .write ("\n " ); //NOI18N
96+
97+ HttpServletResponse servletResponse = (HttpServletResponse ) context .getCurrentInstance ().getExternalContext ().getResponse ();
98+ servletResponse .setHeader ("Pragma" , "no-cache" );
99+ servletResponse .setHeader ("Cache-Control" , "no-store" );
100+ servletResponse .setHeader ("Cache-Control" , "no-cache" );
101+ servletResponse .setHeader ("Expires" , DATE_ONE );
102+ servletResponse .setHeader ("X-Frame-Options" , "SAMEORIGIN" );
103+
89104 renderMetaTag ("no-cache" , "Pragma" , writer , head );
90105 renderMetaTag ("no-cache" , "Cache-Control" , writer , head );
91106 renderMetaTag ("no-store" , "Cache-Control" , writer , head );
0 commit comments