Ik ben een beetje aan het stoeien met het maken van custom componenten. Heb daarvoor een tutorial gevolgd waarmee ik een creditcard inputveld gemaakt heb. Daaraan een Validator gekoppeld. Tot dusver niets aan het handje.
Ik dacht, laat ik dit voorbeeld een beetje uitbreiden met een Converter. Precies hetzelfde gedaan als de Validator, gewoon gekoppeld in de constructor van de component. Met als enige verschil: de Validator wordt wel aangeroepen, de Converter niet.
Mijn constructor:
Stukje uit mijn Validator:
Stukje Converter:
Dit is de output als ik de applicatie start en een formulier submit: (troep er even uitgehaald)
In de validate() methode heeft hij dus een geldige Converter, zie console output. Moet die Converter speciaal geactiveerd worden ofzo? Ik snap er niks meer van.
http://forum.java.sun.com...?threadID=672080&tstart=0
Zijn er hier meer die dit probleem gehad hebben? Op dit Sun forum ben ik het ook al tegengekomen, maar daar weet volgens mij ook niemand de oplossing.
Het is namelijk best wel een probleem, aangezien naar mijn idee het default zetten van Validators en Converters en zo één van de grootste voordelen van een eigen component is. Uiteindelijk zijn de meeste componenten namelijk toch input velden en verschilt de werking. (valideren, converteren, etc)
Ik dacht, laat ik dit voorbeeld een beetje uitbreiden met een Converter. Precies hetzelfde gedaan als de Validator, gewoon gekoppeld in de constructor van de component. Met als enige verschil: de Validator wordt wel aangeroepen, de Converter niet.
Mijn constructor:
code:
1
2
3
4
5
6
| public UICreditCardInput() {
super();
addValidator(new CreditCardValidator());
setConverter(new CreditCardConverter());
System.out.println("constructor");
} |
Stukje uit mijn Validator:
code:
1
2
3
4
5
| ...
public void validate(FacesContext context, UIComponent component, Object value)
throws ValidatorException {
System.out.println("converter in validate: "+((UICreditCardInput)component).getConverter());
... |
Stukje Converter:
code:
1
2
3
4
5
6
| public Object getAsObject(FacesContext context, UIComponent component, String target) throws ConverterException {
System.out.println("getAsObject");
...
public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException {
System.out.println("getAsString");
... |
Dit is de output als ik de applicatie start en een formulier submit: (troep er even uitgehaald)
code:
1
2
3
4
| constructor ... (dit is na het submitten van het formulier) constructor converter in validate: nl.ordina.jsf.component.creditcardinput.CreditCardConverter@318293 |
In de validate() methode heeft hij dus een geldige Converter, zie console output. Moet die Converter speciaal geactiveerd worden ofzo? Ik snap er niks meer van.
http://forum.java.sun.com...?threadID=672080&tstart=0
Zijn er hier meer die dit probleem gehad hebben? Op dit Sun forum ben ik het ook al tegengekomen, maar daar weet volgens mij ook niemand de oplossing.
Het is namelijk best wel een probleem, aangezien naar mijn idee het default zetten van Validators en Converters en zo één van de grootste voordelen van een eigen component is. Uiteindelijk zijn de meeste componenten namelijk toch input velden en verschilt de werking. (valideren, converteren, etc)
Fat Pizza's pizza, they are big and they are cheezy