Friday, August 10, 2007

Il primo esempio con Ajax

In questo esempio creeremo una pagina con un link che se premuto incrementerà di 1 il valore nella label di fianco. Come al solito dovremo modificare il web.xml per definire il gestore dell'applicazione (vedi su HelloWorld) e definire la classe estensione di WebApplication:


<servlet>
<servlet-name>AjaxLinkCounterApplication</servlet-name>
<servlet-class>wicket.protocol.http.WicketServlet</servlet-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>it.denzosoft.web.wicket.sample3.LinkCounterApplication</param-value>
</init-param>
<init-param>
<param-name>configuration</param-name>
<param-value>development</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AjaxLinkCounterApplication</servlet-name>
<url-pattern>/ajaxlinkcounter/*</url-pattern>
</servlet-mapping>

package it.denzosoft.web.wicket.sample3;

import wicket.Application;
import wicket.protocol.http.WebApplication;

public class LinkCounterApplication extends WebApplication {
public LinkCounterApplication() {
}

public Class getHomePage() {
  return LinkCounter.class;
}
}
Adesso definiamo il template della pagina (come al solito banalissimo HTML):
<html>
<body>
 <a href="#" wicket:id="link">This link</a> has been clicked >
 <span wicket:id="label">123</span> times. >
</body>
</html>
Infine definiamo la classe di model:
package it.denzosoft.web.wicket.sample3;

import wicket.ajax.AjaxRequestTarget;
import wicket.ajax.markup.html.AjaxFallbackLink;
import wicket.markup.html.WebPage;
import wicket.markup.html.basic.Label;
import wicket.model.PropertyModel;

public class LinkCounter extends WebPage {
private int counter;
private Label label;
public LinkCounter() {
add(new AjaxFallbackLink("link") {
    @Override
    public void onClick(AjaxRequestTarget target) {
        counter++;
        if(target != null) {
            target.addComponent(label);
        }
    }
});
label = new Label("label", new PropertyModel(this, "counter"));
label.setOutputMarkupId(true);
add(label);
}

public int getCounter() {
return counter;
}
}
A questo punto basterà deployare tramite NetBeans e chiamare l'opportuna url. Complimenti avete realizzato una applicazione Ajax con le seguenti caratteristiche:
  • non avete usato mai javascript
  • avete imparato che wicket ha componenti nativi che supportano Ajax
  • avete imparato che wicket è lo strumento ideale per lavorare con Ajax in quanto nasconde la complessità all'interno dei suoi componenti