SelectBooleanCheckbox Converter

Problem

Viele Programmierer stossen auf das Problem, dass Converter bei SelectBooleanCheckbox nicht funktionieren. Zwar wird in der RenderResponse Phase ein Custom Objekt noch richtig umgesetzt, aber beim Postback in der ProcessValidation Phase erhält man einen Conversion Error.

Eine Untersuchung der Source Codes ergab, dass die Klasse CheckboxRenderer den Converter gar nicht aufruft, sondern immer nur ein Boolean Objekt zurückliefert. Der eröffnete Bug Issue 456 wurde von der Implementation an die Specification weitergereicht und wird wohl nicht so schnell bzw. überhaupt nicht gefixt.

Lösung

Will man trotzdem SelectBooleanCheckbox mit anderen Objekt Typen wie bsw. String verwenden, kann man einen eigenen CheckboxRenderer codieren. Dies geht sehr einfach indem man nur die Standard Renderer Klasse [4] erweitert und die folgende Methode überschreibt:

public Object getConvertedValue(FacesContext context, UIComponent component, Object submittedValue) throws ConverterException { Converter converter = ((ValueHolder) component).getConverter(); return converter.getAsObject(context, component, (String)submittedValue); }

Man sollte aber dabei wissen, wie man einen eigenen Renderer registriert, was bei JSF nicht gerade einfach ist!

Resourcen

[1] JSF 1.2 (Mojarra)
[2] h:selectBooleanCheckbox
[3] javax.faces.component.html.HtmlSelectBooleanCheckbox
[4] com.sun.faces.renderkit.html_basic.CheckboxRenderer

Johannes Hammoud SelectBooleanCheckbox Converter 24.10.2007

I Coding : Community über Java Programmierung

Sprache Englisch+-

Java JSF JavaScript HTML CSS NetBeans GlassFish MySQL

Impressum

Besuche
5744544
Heute
113