Wicket – Markup direkt rendern

Hallo zusammen,

heute habe ich mich eine ganze Zeit mit der Thematik beschäftigt, wie in Wicket eine Möglichkeit geschaffen werden kann, Markup direkt in das zugrundeliegende Html-Template zu rendern.

Hierfür muss man ein wenig basteln, folgender Ansatz hat sich als recht nützlich erwiesen:


class Component extends MarkupContainer {

public Component(String id) {
 super(id);
 }

 @Override
 protected void onComponentTagBody(MarkupStream markupStream,
 ComponentTag openTag) {
 String content = "Hello World!!";
 replaceComponentTagBody(markupStream, openTag, content);
 }

}

Hierdurch kann man den kompletten Body eines Tags ersetzen und direkten Markup rendern (in unserem Fall war das notwendig, um direkt von einem CMS abgeholte Snippets in Wicket zu rendern.

Es geht aber noch einfacher (danke Max!):

class Component extends Label {

public Component(String id) {
 super(id);
 initComponent();
 }

 protected void initComponent() {
 setModel(new Model(){
   public Object getObject(){
       return "Hello World!";
   }
   setEscapeMarkup(false);
   setRenderOnlyBody(true);

 }

}

Evtl. hilft das ja jemandem.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s