Hi,
What is the best way to delete a component and its generated code? I deleted a component using its xml file but then I ran into problems where other code reference it but it was not there.
Thanks,
Steve
Hi,
What is the best way to delete a component and its generated code? I deleted a component using its xml file but then I ran into problems where other code reference it but it was not there.
Thanks,
Steve
Hi Steve,
Could you explain in more details what did you do and what errors do you have now?
So, this is the lay-out file from the sales tutorial.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="[url=http://schemas.haulmont.com/cuba/window.xsd]http://schemas.haulmont.com/cuba/window.xsd"[/url];
caption="msg://browseCaption"
class="com.company.sales.gui.customer.CustomerBrowse"
focusComponent="customersTable"
lookupComponent="customersTable"
messagesPack="com.company.sales.gui.customer">
<dsContext>
<collectionDatasource id="customersDs"
class="com.company.sales.entity.Customer"
view="_local">
<query>
<![CDATA[select e from sales$Customer e]]>
</query>
</collectionDatasource>
</dsContext>
<layout expand="customersTable"
spacing="true">
<filter id="filter"
applyTo="customersTable"
datasource="customersDs">
<properties include=".*"></properties>
</filter>
<table id="customersTable"
width="100%">
<actions>
<action id="create"></action>
<action id="edit"></action>
<action id="remove"></action>
</actions>
<columns>
<column id="name"/>
<column id="email"/>
</columns>
<rows datasource="customersDs"></rows>
<rowsCount></rowsCount>
<buttonsPanel id="buttonsPanel"
alwaysVisible="true">
<button id="createBtn"
action="customersTable.create"></button>
<button id="editBtn"
action="customersTable.edit"></button>
<button id="removeBtn"
action="customersTable.remove"></button>
</buttonsPanel>
</table>
</layout>
</window>
======================
Now I delete the lay out, and the buttons…
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="[url=http://schemas.haulmont.com/cuba/window.xsd]http://schemas.haulmont.com/cuba/window.xsd"[/url];
caption="msg://browseCaption"
class="com.company.sales.gui.customer.CustomerBrowse"
messagesPack="com.company.sales.gui.customer">
<dsContext>
<collectionDatasource id="customersDs"
class="com.company.sales.entity.Customer"
view="_local">
<query>
<![CDATA[select e from sales$Customer e]]>
</query>
</collectionDatasource>
</dsContext>
</window>
==========
and this is the error I got…
java.lang.NullPointerException
at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.createSubComponents(ContainerLoader.java:67)
at com.haulmont.cuba.gui.xml.layout.loaders.WindowLoader.createComponent(WindowLoader.java:48)
at com.haulmont.cuba.gui.xml.layout.LayoutLoader.createWindow(LayoutLoader.java:215)
at com.haulmont.cuba.gui.WindowManager.createLayout(WindowManager.java:483)
at com.haulmont.cuba.gui.WindowManager.createWindow(WindowManager.java:395)
at com.haulmont.cuba.gui.WindowManager.openWindow(WindowManager.java:585)
at com.haulmont.cuba.web.WebWindowManager.openWindow(WebWindowManager.java:123)
at com.haulmont.cuba.gui.config.MenuCommand.execute(MenuCommand.java:100)
at com.haulmont.cuba.web.sys.MenuBuilder$1.menuSelected(MenuBuilder.java:164)
at com.vaadin.ui.MenuBar.changeVariables(MenuBar.java:207)
at com.vaadin.server.communication.ServerRpcHandler.changeVariables(ServerRpcHandler.java:609)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:428)
at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:274)
at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:79)
at com.haulmont.cuba.web.sys.CubaVaadinServletService$CubaUidlRequestHandler.lambda$synchronizedHandleRequest$92(CubaVaadinServletService.java:307)
at com.haulmont.cuba.web.sys.CubaVaadinServletService.withUserSession(CubaVaadinServletService.java:189)
at com.haulmont.cuba.web.sys.CubaVaadinServletService$CubaUidlRequestHandler.synchronizedHandleRequest(CubaVaadinServletService.java:307)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1409)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:369)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:254)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:163)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at com.haulmont.cuba.web.sys.CubaHttpFilter.handleNotFiltered(CubaHttpFilter.java:108)
at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:95)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Just keep the empty element in the screen, it is required.