Posts Tagged: ‘beforeRenderResponse’

XPages: Header setzen

8. November 2011 Posted by airwolf89

Weil heute Dienstag ist gibt’s gleich noch einen kleinen Tipp hinterher.

Es gibt ja die Möglichkeit meta-header zu setzen. Um dies zu tun hat man 2 Möglichkeiten.
1. Über die Properties der XPage eine Ressource vom Typ metaData setzen (siehe Bild)
2. Im BeforeRenderResponse-Event ein paar Zeilen Code einfügen, welche in etwa so aussehen:

try {
   var response = facesContext.getExternalContext().getResponse();
   response.setHeader("Expires", -1);
   response.setHeader("Cache-Control", "no-cache");
   response.setHeader("IE=EmulateIE7", "X-UA-Compatible");
} catch (e) {}

Normalerweise würde man denken, wo man es setzt ist doch. Leider ist es das nicht…

Manche Header können nicht über die erste Variante gesetzt werden. Ich weiß nicht genau zu welchem Zeitpunkt er über die konfigurative Möglichkeit die Header einfügen möchte, auf jeden Fall sind sie schon da!

D.h. wenn ich beispielsweise einen Header IE=EmulateIE7 setzen möchte, wie in einem früheren Post von mir als Workaround beschrieben, dann sollte man das über Variante 2, also im BeforeRenderResponse lösen, da ansonsten vom Browser die Warnung angezeigt wird, dass dieser Header ignoriert wird weil der Doctype schon gesetzt wurde. Fügt man ihn im Event ein, so wird keine Meldung angezeigt.

Im übrigen, wer schnell mal nachschaut, ja, der Header steht trotzdem im Quellcode, er wird scheinbar nur ignoriert weil er zu spät gesetzt wurde.