I have a POJO class Test that has Integer and String fields (all of them can be 
null). And I have javafx form with TextFields. To bind Test fields to text 
fields I use adapter. Now I create an instance of Test (all fields will be null)
Test test=new Test();
TestAdapter adapter=newTestAdapter(test);
//the following line works, although String name=null
nameTextField.textProperty().bindBidirectional(adapter.getNameProperty());
//the following line throws exception Integer id=null
idTextField.textProperty().bindBidirectional(adapter.getIdProperty(),newNumberStringConverter());
This is the exception I get:
>Exception in thread "JavaFX Application Thread" java.lang.NullPointerException 
>at 
>javafx.beans.property.adapter.JavaBeanIntegerProperty.lambda$get$38(JavaBeanIntegerProperty.java:95)
> at java.security.AccessController.doPrivileged(Native Method) at 
>javafx.beans.property.adapter.JavaBeanIntegerProperty.get(JavaBeanIntegerProperty.java:92)
> at javafx.beans.binding.IntegerExpression.getValue(IntegerExpression.java:69) 
>at javafx.beans.binding.IntegerExpression.getValue(IntegerExpression.java:44) 
>at 
>com.sun.javafx.binding.BidirectionalBinding.bind(BidirectionalBinding.java:88) 
>at javafx.beans.binding.Bindings.bindBidirectional(Bindings.java:869) at 
>javafx.beans.property.StringProperty.bindBidirectional(StringProperty.java:111)
Everything works ok if I do this way
test.setId(0);
idTextField.textProperty().bindBidirectional(adapter.getIdProperty(),newNumberStringConverter());
However, you can imagine how ugly this solution is - I loose all the abilities 
of null value and for my CRUD application it is death. Please, help me to 
understand how to work with Integer(and Others?) null values with bindings and 
adapters.


-- 
Александр Свиридов

Reply via email to