Hi!
Scheinbar funktionieren binders bei Vaadin 8 nur mit dem Datentyp String.
Nun hat meine Klasse aber auch Attribute des Datentyps 'int' und 'boolean'.
Eine zweckentfremdende Möglichkeit wäre nun einfach alle Datentypen auf String setzen (wie bei isActive gemacht) und entsprechend Konstruktor und getters&setters anpassen. Das funktioniert zwar, aber finde ich nicht gut - User kann ja dann alles reinschreiben, was er will...
Sonst habe ich bzgl. Integers (bei booleans gibt es das wohl auch) noch die Möglichkeit mit 'withConverter()' zu arbeiten:
Gefällt mir auch nicht, weil ich ja eigentlich via einem Validator z.B. bestimmen mag, dass die Anzahl der Kämpfe > 0 sein muss...,
d.h. falls Binders auch mit Integers funktionieren würden, dann könnte mein gewünschter Code wohl so aussehen:
Das klappt eben nicht, weil wohl bei Binders nur Argumente das Datentyps String akzeptiert werden.
Daher frage ich mich, wie man hier am besten drumherumarbeiten kann, damit in Summe das rauskommt, was man haben will -> sprich Binders auch auf Attribute anderer Datentypen effektiv anwenden zu können? Kennt ihr da Möglichkeiten?
Zusatzfrage:
Interessehalber (möchte jedoch bei Vaadin 8 bleiben) : Kann man auf höheren Versionen von Vaadin mittlerweile Binders mit anderen Datentypen, als nur Strings
direkt benutzen?
Viele Grüße
Zrebna
Scheinbar funktionieren binders bei Vaadin 8 nur mit dem Datentyp String.
Nun hat meine Klasse aber auch Attribute des Datentyps 'int' und 'boolean'.
Java:
public class Boxer {
private String fullName;
private String weightClass;
private int numberOfFights;
private String isActive;
Eine zweckentfremdende Möglichkeit wäre nun einfach alle Datentypen auf String setzen (wie bei isActive gemacht) und entsprechend Konstruktor und getters&setters anpassen. Das funktioniert zwar, aber finde ich nicht gut - User kann ja dann alles reinschreiben, was er will...
Sonst habe ich bzgl. Integers (bei booleans gibt es das wohl auch) noch die Möglichkeit mit 'withConverter()' zu arbeiten:
Java:
binder.forField(numberOfFights)
.withConverter(new StringToIntegerConverter("The number of fights must be a number!"))
.bind(Boxer::getNumberOfFights, Boxer::setNumberOfFights);
Gefällt mir auch nicht, weil ich ja eigentlich via einem Validator z.B. bestimmen mag, dass die Anzahl der Kämpfe > 0 sein muss...,
d.h. falls Binders auch mit Integers funktionieren würden, dann könnte mein gewünschter Code wohl so aussehen:
Java:
binder.forField(numberOfFights)
.withValidator(number -> number > 0,
"Boxer must have at least 1 fight!")
.bind(Boxer::getNumberOfFights, Boxer::setNumberOfFights);
Das klappt eben nicht, weil wohl bei Binders nur Argumente das Datentyps String akzeptiert werden.
Daher frage ich mich, wie man hier am besten drumherumarbeiten kann, damit in Summe das rauskommt, was man haben will -> sprich Binders auch auf Attribute anderer Datentypen effektiv anwenden zu können? Kennt ihr da Möglichkeiten?
Zusatzfrage:
Interessehalber (möchte jedoch bei Vaadin 8 bleiben) : Kann man auf höheren Versionen von Vaadin mittlerweile Binders mit anderen Datentypen, als nur Strings
direkt benutzen?
Viele Grüße
Zrebna