wicketIniziare con wicket


Osservazioni

Wicket è un framework basato su componenti, che lo mette in netto contrasto con alcune delle soluzioni precedenti al compito talvolta monotono della programmazione web. Come altri framework, Wicket si basa sull'API di servlet di Sun.

Tuttavia, a differenza di framework come Struts o Spring MVC, lo sviluppatore che utilizza Wicket è in gran parte rimosso dalla natura di richiesta / risposta inerente al web e ai servlet. Invece di costruire controller che devono servire molti utenti e thread contemporaneamente, prendere richieste, restituire risposte e non memorizzare mai stati, lo sviluppatore di Wicket pensa in termini di componenti stateful. Invece di creare un controller o una classe di azione, crea una pagina, inserisce i componenti su di essa e definisce in che modo ciascun componente reagisce all'input dell'utente.

Wicket usa il normale XHTML per il template. Ogni componente è associato a un elemento denominato nell'XHTML e diventa responsabile del rendering di quell'elemento nell'output finale. La pagina è semplicemente il componente contenente il livello principale ed è accoppiata esattamente con un modello XHTML.

Ogni componente è supportato da un proprio modello, che rappresenta lo stato del componente. Il framework non ha conoscenza di come i componenti interagiscono con i loro modelli, che vengono trattati come oggetti opachi automaticamente serializzati e mantenuti tra le richieste. Modelli più complessi, tuttavia, possono essere rimovibili e fornire ganci per organizzare il proprio stoccaggio e ripristino all'inizio e alla fine di ogni ciclo di richiesta.

In Wicket, tutto lo stato lato server viene gestito automaticamente. Non si dovrebbe mai usare direttamente un oggetto HttpSession o un wrapper simile per memorizzare lo stato. Invece, lo stato è associato ai componenti. Ogni componente di pagina sul lato server contiene una gerarchia nidificata di componenti stateful, in cui il modello di ciascun componente è, alla fine, un POJO (Plain Old Java Object).

Versioni

Versione Data di rilascio
8.0.0-M4 2017/02/07
7.6.0 2016/12/29
6.26.0 2016/12/29

Installazione o configurazione

La mia prima configurazione Wicket, l'app che mostra Hello World sulla schermata principale:

import org.apache.wicket.protocol.http.WebApplication;
public class HelloWorldApplication extends WebApplication {
    
    public HelloWorldApplication() {
    }
    
    @Override
    public Class getHomePage() {
        return HelloWorld.class;
    }
}
 

HelloWorld.java

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
public class HelloWorld extends WebPage {
    public HelloWorld() {
        add(new Label("message", "Hello World!"));
    }
}
 

HelloWorld.html

<html>
   <body>
       <span wicket:id="message">Message goes here</span>
    </body>
</html>
 

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <display-name>My first Wicket App</display-name>
    <filter>
        <filter-name>HelloWorldApplication</filter-name>
        <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
        <init-param>
          <param-name>applicationClassName</param-name>
          <param-value>org.apache.wicket.examples.helloworld.HelloWorldApplication</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>HelloWorldApplication</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>
 

pom.xml

    <dependency>
        <groupId>org.apache.wicket</groupId>
        <artifactId>wicket-core</artifactId>
        <version>${wicket.version}</version>
    </dependency>