Imam intranet web aplikaciju koja u prezentacionom delu koristi JSF i to Richfaces biblioteku podataka. Video sam ovde dosta negativnih komentara o ovom okruženju ali šta da se radi.
U svom PhaseListeneru sam podesio da mogu da se koriste samo Internet Explorer 7 i Mozilla Firefox 3 pošto se kod tih browsera aplikacija najbolje pokazala s tim što se pod Mozillom izvršava uočljivo brže. Može da se radi u više tabova istovremeno bez ikakvih problema zahvaljujući pre svega <a4j:keepAlive/> tagu i to izgleda jako dobro.
Medjutim, postoji problem u korišćenju Back dugmeta i pokušao sam da primenim neku od brojnih javascript funkcija za vraćanje na stranu pre klika na Back dugme. U najvećem broju slučajeva to je i uspevalo ali u nekim slučajevima nije(verovatno zato što u 95% slučajeva koristim Ajax kod odgovora na akcije korisnika) i zbog toga sam od tog rešenja odustao.
Na kraju sam pronašao PhaseListener koji koji u svaku stranicu u header deo dodaje i deo kojim se kaze da nema keširanja stranica:
public class CacheControlPhaseListener implements PhaseListener {
/**
*
*/
private static final long serialVersionUID = 1L;
public PhaseId getPhaseId(){
return PhaseId.RENDER_RESPONSE;
}
public void afterPhase(PhaseEvent event) {}
public void beforePhase(PhaseEvent event){
FacesContext facesContext = event.getFacesContext();
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
response.addHeader("Pragma", "no-cache");
response.addHeader("Cache-Control", "no-cache");
response.addHeader("Cache-Control", "must-revalidate");
response.addHeader("Expires", "Mon, 8 Aug 2006 10:00:00 GMT"); // some date in the past
}
}
I nakon toga u Internet Exploreru 7 ukoliko se klikne na dugme Back javlja se poruka "Webpage has expired". Mada ovo nije baš korisnički orjentisano ipak ukoliko ne nadjem neko drugo rešenje ću ovo i primeniti. Medjutim, u Firefoxu 3 se ne ponaša ovako već kao i pre tj. kao da ovo ignoriše. Interesuje me kako mogu podesiti da se i Firefox 3 ponaša kao Internet Explorer 7 tj. koju još direktivu da dodam u zaglavlje dokumenta? Voleo bih da koristim Firefox 3 pošto se dosta toga izvršava na klijentskoj strani zbog Ajaxa, a to se izvršava primetno brže kod Mozille 3.
Vidim da je ovo problem i kod nekih drugih server side okruženja ali je posebno izražen kod JSF (verovatno zbog post metoda slanja podataka na server) tako da ovo pitanje nije strogo vezano za JSF.

Onemogućavanje korišćenja Back dugmeta u Mozilla Firefox-u kod JSF aplikacija