Wicket in meinem MoinMoin Wiki

In einem ersten Artikel zu meinem Wiki hab ich dessen Notwendigkeit und Verwendung geschildert. Hier nun ein Beispiel in Form der Seite für Apache Wicket, das Java Web Framework, in das ich mich gerade einarbeite, was in der Anfangsphase immer auf eine Sammlung guter Links auf Tutorials, HowTos und Artikel heraus läuft. Diese möchte ich hier teilen. Da mein Wiki nicht öffentlich ist, und ich spontan nicht genau weiß, wie ich die Seite hier einbinden soll, versuche ich mal das HTML einfach ein zuschleußen. Bitte dabei die schlechte Formatierung verzeihen. Deswegen auch noch als ApacheWicket Seite PDF Anhang.

ApacheWicket ist das Komponentenorientierte Webframework von Apache

Versionen

Wicket 6.0

Erweiterungen

Wicket CDI

Wird ab Wicket 6.1 Bestandteilsein.

Mit den obigen Downnloads haben wir unsere Beispielanwendung auf Glassfish nicht ohne Exceptions zum Laufen gebracht. Wohl aber mit den Downloads von http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22wicket-cdi%22. Wicket CDI netbeans library def in WicketCDI.xml.

Wicket CDI wird initialisiert in der Application-Klasse der Anwendung:

 1  @Override
 2  protected void init() {
 3  super.init();
 4  try {
 5  BeanManager manager = (BeanManager) new InitialContext().lookup("java:comp/BeanManager");
 6  new CdiConfiguration(manager).configure(this);
 7  } catch (NamingException ex) {
 8  Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Error initializing CdiConfiguration", ex);
 9  }
 10  }

Wicket RAD

Generiert Formulare per Annotationen, wohl ähnlich unserem Ansatz. Sichten!

jQuery UI Integration

wiquery

wicket-jquery-ui

jqwicket

Ist wohl nicht so aktuell.

Komponenten

Wicket und Datenanbindung, JPA

Problemfelder

Build und Install

Build von wicket 6.0

Beim Build von wicket 6.0 treten in den Tests vereinzelt Fehler auf, die den Build unterbrechen. In http://wicket.apache.org/contribute/build.htmlwird dies als möglich genannt und als Abhilfe genannt:

mvn -Dmaven.test.skip=true -Prelease package

-Preleasebewirkt, das auch javadoc und source jars abgelegt werden.

In netbeans rufen wird das mit Custom/Goals ab und füllen den Dialog wie folgt aus, um gemerktes Kommando releaseNoTests zu definieren:

Netbeans Dialog Custom Goal NoTests

Detachment of Models

Betrieb unter Glassfish

Fehler durch log4j

Bei unseren ersten Versuchen mit Glassfish trat folgender Fehler auf:

SEVERE: log4j:ERROR log4j called after unloading, see http://logging.apache.org/log4j/1.2/faq.html#unload.
SEVERE: java.lang.IllegalStateException: Class invariant violation
        at org.apache.log4j.LogManager.getLoggerRepository(LogManager.java:199)
        at org.apache.log4j.LogManager.getLogger(LogManager.java:228)
        at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:64)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270)

Dies ist in http://serverfault.com/questions/304596/how-to-set-enable-clear-references-in-glassfish-3-1-1erwähnt mit der Lösung:

bin/asadmin create-system-properties org.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false

oder in der Admin Konsole unter Server (Admin-Server)/Eigenschaften/Systemeigenschaften.

HowTo

Verwendung der Komponenten

Repeaters

Forms

JSR 303 Validierung

Required Label

Resource Management

Neu in Wicket 6.0:

Mounting Resources

Bilder anzeigen

Up- und Download

 1  private Component createDownloadLink() {
 2  Component link = new ResourceLink<Void>("pdf", new AbstractResource() {
 3  @Override
 4  protected ResourceResponse newResourceResponse(Attributes attributes) {
 5  final byte[] pdfBytes = getPdfBytes();
 6  ResourceResponse r = new ResourceResponse();
 7  r.setFileName("yourpdf.pdf");
 8  r.setContentType("application/pdf");
 9  r.setContentDisposition(ContentDisposition.ATTACHMENT);
 10  r.setContentLength(pdfBytes.length);
 11  r.setWriteCallback(new WriteCallback() {
 12  @Override
 13  public void writeData(Attributes attributes) throws IOException {
 14  attributes.getResponse().write(pdfBytes);
 15  }
 16  });
 17  return r;
 18  }
 19  });
 20  return link;
 21  } 

Google Maps Anbindung

Migration

Zu Wicket 6.0

Zusätzlicher Typ Parameter beim Sortieren

Bei allen Sortierfragen von DataTable tritt mit 6.0 ein neuer Typ-Parameter auf. Wie ein Vergleich von Javadoc SortParam 1.5 und Javadoc SortParam 6.0 zeigt, kann er im Allgemeinen mit Stringbelegt werden.

Verwendung

CMS mit Wicket