Erzeugung von Control-Instanzen

Um das Feld letztlich auf die Anwendung zu bringen, müssen wir es in die jeweilige jsp Datei einbinden, in welches das Element ausgestrahlt werden soll. Dafür gibt es die ControlProvider Schnittstelle, was als Bindeglieg zwischen der Kontroll Klasse und der jsp Datei agiert. Die Klasse sieht in der Regel so aus:

public static class CP implements ControlProvider {

	public static final CP INSTANCE = new CP();

	/**
	 * Singleton constructor.
	 */
	public CP() {
	}

	@Override
	public Control createControl(Object model, String style) {
		return new ButtonDyerControl((StringField) model);
	}
}

Da der Modell Parameter ein Objekt ist, darf die Konvertierung in das gewünschte Feldobjekt nicht fehlen. Die CP Instanz muss nun in die jsp Datei eingefügt werden, auf der Seite, auf welches das Modell angezeigt werden soll. Am Besten kopiert man sich den qualifizierten Namen der Instanz, um keine Flüchtigkeitsfehler zu begehen.

Der qualifizierte Name kann dann dem controlProvider Attribut zugewiesen werden.

<form:label name="buttonDyer" />
<form:custom name="buttonDyer"
controlProvider="<%= Qualified name of instance %>"
/>

​Es gibt auch noch einen anderen Weg, wie man dem Feld einen ControlProvider zuweisen kann. Das Feld hat eine Methode, welche als Argument die CP Instanz benötigt.

buttonString.setControlProvider(Qualified name of instance);