Freitag, 3. Dezember 2010

JSF 2.0 - Ajax Einsatz

Java Server Faces 2.0.3

Der Einsatz von Ajax in JSF ist relativ simpel zu implementieren, hier ein kleines Testbeispiel, das 2 Buttons includiert, wobei einer einen Ajax Request auslöst, während der andere einen normalen Request auslöst.


   
    
     
    
    
   
   
    
   
   
    
   
  

Der f:ajax tag wird einfach als Kindelement unter das Control gehängt, daß den Request auslösen soll, und als Attribut render wird die id des Tags eingetragen, der als einziger neu gerendert werden soll, simpler geht es fast nicht mehr.
Dazu die Bean, die natürlich auch in der faces-config.xml registriert ist:

import java.util.Date;

public class SearchBean {
 private Date now;
 public Date getNow() {
  now =  new java.util.Date();
  return now;
 }
 public void setNow(Date now) {
  this.now = now;
 }
}

Man kann schon sehen wie beim Drücken des einen Buttons alles neu gezeichnet wird, während der andere nur das eine Control neu zeichnet.

Einen Fallstrick gibt es, der mit etwas Zeit gekostet hat: Der Ajax Request funktionierte einfach nicht, und im Log war diese seltsame Fehlermeldung zu finden:
Eine oder mehrere Ressourcen haben das Ziel 'head', aber es wurde keine Komponente 'head' in der Ansicht definiert.


Mit Hilfe dieses Blogeintrags habe ich dann das Problem ausmachen können:
Das jsf.js wurde nicht geladen, weil ich den Tag 'head' eingesetzt habe und nicht den Tag 'h:head'.


Links:
Ajax Kapitel aus dem JSF 2.0 Buch der Firma irian

Keine Kommentare:

Kommentar veröffentlichen