Html-Package

Das Html-Package enthält Java Klassen, mit denen HTML Dokumentenvorlagen erzeugt und instanziert werden können.

Dokumentenvorlagen können so gestaltet werden, dass man sie unmittelbar mit einem Browser betrachten kann. Das hat Vorteile, wenn das Html-Package zusammen mit dem Web-Controller-Package benutzt wird, um eine Webapplikation zu bauen und die verwendeten HTML Dokumentenvorlagen in einem Content Management System verwaltet werden. Im Content Management System müssen dann keine speziellen Vorkehrungen getroffen werden, um zwischen dem HTML Code zu unterscheiden, der den Nutzern des CMS (z.B. den Redakteuren) präsentiert wird und dem HTML Code, der vom CMS zu Webapplikation exportiert wird.


Map und Sequence

Mit Objekten der Interfaces Map und Sequence werden die Werte repräsentiert, die in ein Template eingefüllt werden können. Eine Map besteht aus Paaren von Namen und Werten. Werte können entweder Zeichenketten sein oder Sequences.

public interface Map
{
  public boolean hasValue(String name);
  public String getString(String name);
  public Sequence getSequence(String name);
}


Eine Sequence ist eine Sequenz von Maps.

public interface Sequence
{
  public boolean hasMoreElements();
  public Map nextMap();
}


Template

Aus Templates können HTML Seiten erstellt werden, indem man die Templates anhand der Daten aus einer Map instanziert.

public interface Template
{
  public String getInstance(Map map);
}

Das Html-Package bringt eine Standardimplementierung des Template Interfaces in der Klasse TemplateImpl mit. Instanzieren der Dokumentenvorlage bedeutet bei dieser Implementierung, dass für jedes Name Wert Paar aus der Map die Komponenten des Templates mit dem referenzierten Namen gesucht werden und der Wert in die Komponente eingetragen wird. Als Komponenten sind möglich:

• Eingabefelder (Hidden, Text, Password, Radio, Checkbox, Textarea, Select) - es wird der Wert des Felds gesetzt,
• Bilder - es wird die URL des Bilds gesetzt,
• Links - es wird die URL des Links gesetzt,
• Span - es wird der Style gesetzt,
• Inserts - das Insert Tag wird durch den Wert ersetzt,
• Optional - der Inhalt das Optional Tags bleibt nur in der Ausgabeseite erhalten, wenn der aus der Map mit dem Wertattribut des Tags übereinstimmt.

Es gibt drei Arten von Inserts: Text, List und Dropdown. Alle Inserts werden als HTML Kommentare in der Seite markiert.


Text Inserts

Text Inserts werden bei der Instanzierung des Templates durch den zugehörigen Wert in der Map ersetzt.

<!-- insert name="... Name ..." type="text" --> ... <!-- /insert -->


List Inserts

Bei List Inserts werden innerhalb des Inserts zusätzlich der Kopf, eine Zeile und der Fuss der Liste markiert. In der Map, mit der das Template instanziert wird, wird als Wert für das List Insert eine Sequenz von Maps erwartet. Die Maps werden verwendet, um Ersetzungen in den Listenzeilen vorzunehmen.

<!-- insert name="... Name ..." type="list" -->
<!-- head -->
<table>
<!-- /head -->
<!-- element -->
<tr>
<td><!-- insert name="... Spalte 1 ..." type="text" /--></td>
<td><!-- insert name="... Spalte 2 ..." type="text" /--></td>
...
</tr>
<!-- /element -->
<!-- tail -->
</table>
<!--/tail -->
<!-- /insert -->


Dropdown Inserts

Dropdown Inserts werden durch dynamisch generierte Dropdowns ersetzt.

<!-- insert name="... Name ..." type="dropdown" dropdownname="... Name der Dropdown ..." keyname="... Name der Schlüssel ..." valuename=" ... Name der Werte ..." /-->


Optionals

Auch Optionals werden als HTML Kommentare in der Seite markiert. Der Inhalt eines Optionals bleibt nur dann beim Instanzieren in der Seite erhalten, wenn der Wert in der Map mit dem Value Attribut des Optionals übereinstimmt.

<!-- optional name="... Name ..." value="... Wert ..." --> ... <!-- /optional -->


Download

Die Quelltexte unterliegen der Modified Artistic License v1 und finden sich in der Version v6 in der unten verlinkten Jar-Datei mit dem Namen htmlsrc.jar.

Zusätzlich wird noch das Collections-Package benötigt.


htmlsrc.jar