I have replaced the standard LookupField implementation with my own.
Implementation :
- Created “CustomLookupField” class named “NetworkSearchComponent”
2.Created components.xml file in web module:
<components xmlns="http://schemas.haulmont.com/cuba/components.xsd"> <component> <name>LookupField</name> <class>com.company.zeusv2.web.screens.NetworkSearchComponent</class> <tag>LookupField</tag> <componentLoader>com.haulmont.cuba.gui.xml.layout.loaders.LookupFieldLoader</componentLoader> </component> </components>
- Registered this file in
web-app.properties
:
cuba.web.componentsConfig = +com/company/demo/components.xml
Problem:
I am not able to set options to this component. However other properties like “setWidth“ “setCaption“ “setValues“ are able to set. If I try to “this.setOptionsList(Arrays.asList(“Option1”, “Option2”));” as shown in fig 1. I am getting this null pointer exception.
java.lang.NullPointerException
at com.haulmont.cuba.web.gui.components.WebLookupField.setOptions(WebLookupField.java:242)
at com.haulmont.cuba.gui.components.OptionsField.setOptionsList(OptionsField.java:61)
at com.company.zeusv2.web.screens.NetworkSearchComponent.(NetworkSearchComponent.java:27)
at com.company.zeusv2.web.networkmapping.NetworkMappingBrowse.init(NetworkMappingBrowse.java:50)
at com.haulmont.cuba.gui.components.AbstractWindow.init(AbstractWindow.java:96)
at com.haulmont.bali.events.EventHub.publish(EventHub.java:170)
at com.haulmont.cuba.gui.screen.Screen.fireEvent(Screen.java:128)
at com.haulmont.cuba.gui.screen.UiControllerUtils.fireEvent(UiControllerUtils.java:58)
at com.haulmont.cuba.web.sys.WebScreens.createScreen(WebScreens.java:248)
at com.haulmont.cuba.web.sys.WebScreens.create(WebScreens.java:171)
at com.haulmont.cuba.gui.config.MenuItemCommands$ScreenCommand.run(MenuItemCommands.java:212)
at com.haulmont.cuba.web.sys.SideMenuBuilder$MenuCommandExecutor.accept(SideMenuBuilder.java:264)
at com.haulmont.cuba.web.sys.SideMenuBuilder$MenuCommandExecutor.accept(SideMenuBuilder.java:249)
at com.haulmont.cuba.web.gui.components.mainwindow.WebSideMenu$MenuItemImpl.menuSelected(WebSideMenu.java:569)
at com.haulmont.cuba.web.widgets.CubaSideMenu$1.menuItemTriggered(CubaSideMenu.java:90)
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:498)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:153)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:115)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:431)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:396)
at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:260)
at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:82)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1577)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:425)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:329)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:215)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107)
I also tried overriding this method, instead of setting this property in the constructor but its not working.
Please provide your inputs how to setOptionsList to this component.