received "java.lang.NullPointerException: value cannot be null" in Grid inl

Hi, all

I am new to V8 and I receive “java.lang.NullPointerException: value cannot be null” error when try to enter inline editor from a grid by double clicking a row that include some null column values. The inline editor works fine if all columns contain data. Any help is greatly appreciated.

Where does the NPE come from - the editor, or perhaps a validator or converter?

I have no idea. Here is the exception. thanks !

May 30, 2018 11:32:23 AM com.vaadin.server.DefaultErrorHandler doDefault
SEVERE:
java.lang.NullPointerException: value cannot be null
at java.util.Objects.requireNonNull(Objects.java:228)
at com.vaadin.ui.AbstractTextField.setValue(AbstractTextField.java:97)
at com.vaadin.ui.AbstractTextField.setValue(AbstractTextField.java:47)
at com.vaadin.data.Binder$BindingImpl.initFieldValue(Binder.java:1071)
at com.vaadin.data.Binder$BindingImpl.access$100(Binder.java:925)
at com.vaadin.data.Binder.lambda$readBean$2(Binder.java:1588)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at com.vaadin.data.Binder.readBean(Binder.java:1588)
at com.vaadin.ui.components.grid.EditorImpl.doEdit(EditorImpl.java:225)
at com.vaadin.ui.components.grid.EditorImpl$1.bind(EditorImpl.java:151)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:155)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:116)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:445)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:410)
at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:274)
at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:90)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1601)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:445)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

I think it’s from the convertor.

Binder.Binding<DuesYearlyItems, Double> oeRedPctBinding = binder.forField(oeRedPctField)
.withConverter(new StringToDoubleConverter(“Please enter numeric value”))
.bind(DuesYearlyItems::getOeRedPct, DuesYearlyItems::setOeRedPct);
memberGrid.addColumn(“oeRedPct”).setEditorBinding(oeRedPctBinding);
memberGrid.getColumn(“oeRedPct”).setEditable(true);

withNullRepresentation is often helpful
https://vaadin.com/api/8.4.2/com/vaadin/data/Binder.BindingBuilder.html#withNullRepresentation-TARGET-

Thanks Ron !