Экран регистрации

Здравствуйте! В своей системе я хочу создать экран регистрации пользователя: есть ли экран, который можно будет расширить в CUBA для этого или же необходимо с нуля писать свой экран?

Экран называется UserBrowser (Пользователи) находится в разделе Администрация.
Добавить раздел администрация можно с помощью Cuba Studio переключившись в Composite mode,
help
либо создать/найти свой web-menu.xml и указать к нему путь в web-app.properties cuba.menuConfig = +<вашпуть>/web-menu.xml

+ в этой настройке если я не ошибаюсь, включает Composite mode(то есть учитывает стандартное меню предоставляемое платформой).

На этом экране возможно создавать и редактировать пользователей.

Добрый день.

Пример регистрации новых пользователей можно посмотреть в этом проекте: https://github.com/cuba-platform/sample-user-registration.

Глеб

2 Симпатий

Добрый день, спасибо! Мне необходимо открывать экран регистрации через OpenMode.NEW_TAB, однако я получаю ошибку:

com.vaadin.server.ServerRpcManager$RpcInvocationException: Unable to invoke method click in com.vaadin.shared.ui.button.ButtonServerRpc
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:157) ~[vaadin-server-8.9.2-14-cuba.jar:8.9.2-14-cuba]
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:115) ~[vaadin-server-8.9.2-14-cuba.jar:8.9.2-14-cuba]
	at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:431) [vaadin-server-8.9.2-14-cuba.jar:8.9.2-14-cuba]
	at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:396) [vaadin-server-8.9.2-14-cuba.jar:8.9.2-14-cuba]
	at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:260) [vaadin-server-8.9.2-14-cuba.jar:8.9.2-14-cuba]
	at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:82) [vaadin-server-8.9.2-14-cuba.jar:8.9.2-14-cuba]
	at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) [vaadin-server-8.9.2-14-cuba.jar:8.9.2-14-cuba]
	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1578) [vaadin-server-8.9.2-14-cuba.jar:8.9.2-14-cuba]
	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:425) [vaadin-server-8.9.2-14-cuba.jar:8.9.2-14-cuba]
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:329) [cuba-web-7.2.7.jar:7.2.7]
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:215) [cuba-web-7.2.7.jar:7.2.7]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) [servlet-api.jar:4.0.FR]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [catalina.jar:9.0.38]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.38]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-websocket.jar:9.0.38]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.38]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.38]
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108) [spring-web-5.2.3.RELEASE.jar:5.2.3.RELEASE]
	at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74) [spring-web-5.2.3.RELEASE.jar:5.2.3.RELEASE]
	at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:93) [cuba-web-7.2.7.jar:7.2.7]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.38]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.38]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) [catalina.jar:9.0.38]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) [catalina.jar:9.0.38]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) [catalina.jar:9.0.38]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) [catalina.jar:9.0.38]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [catalina.jar:9.0.38]
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690) [catalina.jar:9.0.38]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) [catalina.jar:9.0.38]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [catalina.jar:9.0.38]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) [tomcat-coyote.jar:9.0.38]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-coyote.jar:9.0.38]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-coyote.jar:9.0.38]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) [tomcat-coyote.jar:9.0.38]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.38]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_261]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_261]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.38]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_261]
Caused by: java.lang.reflect.InvocationTargetException: null
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_261]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_261]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_261]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_261]
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:153) ~[vaadin-server-8.9.2-14-cuba.jar:8.9.2-14-cuba]
	... 38 common frames omitted
Caused by: java.lang.IllegalStateException: RootWindow does not have any configured work area
	at com.haulmont.cuba.web.sys.WebScreens.getConfiguredWorkArea(WebScreens.java:925) ~[cuba-web-7.2.7.jar:7.2.7]
	at com.haulmont.cuba.web.sys.WebScreens.showNewTabWindow(WebScreens.java:1579) ~[cuba-web-7.2.7.jar:7.2.7]
	at com.haulmont.cuba.web.sys.WebScreens.show(WebScreens.java:454) ~[cuba-web-7.2.7.jar:7.2.7]
	at com.haulmont.cuba.gui.screen.Screen.show(Screen.java:309) ~[cuba-gui-7.2.7.jar:7.2.7]
	at com.haulmont.bench.tyres.web.screens.loginscreen.TyresLoginScreen.onRegisterBtnClick(TyresLoginScreen.java:69) ~[app-web-0.1-SNAPSHOT.jar:na]
	at com.haulmont.bali.events.EventHub.publish(EventHub.java:170) ~[cuba-global-7.2.7.jar:7.2.7]
	at com.haulmont.cuba.web.gui.components.WebAbstractComponent.publish(WebAbstractComponent.java:100) ~[cuba-web-7.2.7.jar:7.2.7]
	at com.haulmont.cuba.web.gui.components.WebButton.buttonClicked(WebButton.java:70) ~[cuba-web-7.2.7.jar:7.2.7]
	at com.haulmont.cuba.web.widgets.CubaButton.fireClick(CubaButton.java:76) ~[cuba-web-widgets-7.2.7.jar:na]
	at com.vaadin.ui.Button$1.click(Button.java:57) ~[vaadin-server-8.9.2-14-cuba.jar:8.9.2-14-cuba]
	... 43 common frames omitted

Нашел следующую статью на форуме : https://www.cuba-platform.com/discuss/t/programatically-showing-different-screens/982. Попробовал воспроизвести указанные там советы, однако успеха не добился (та же самая ошибка). Подскажите, пожалуйста, что не так? Во вложениях дескриптор и контролер экрана. Заранее спасибо! Также хотелось бы отметить, что приложенный вами sample вовсе не работает на версии CUBA 7.2.11.
tyres-login-screen.xml (4.4 КБ) TyresLoginScreen.java (2.9 КБ)

На экране логина нет TabSheet для отображения экранов в табинах.

Спасибо, что сообщили о проблеме, у нас есть задача в GitHub.

1 Симпатия

А как это реализовано тогда в MainScreen? Разбираю исходники данного экрана и не вижу там TabSheet. Мне необходимо открывать экран регистрации из экрана авторизации не в диалоговом окне, а как отдельный экран: как это можно сделать?

workArea обеспечивает наличие TabSheet в зависимости от настроек отображения.

Можно указать OpenMode.ROOT, но сейчас возврат из такого окна не работает, видимо по той же причине.

Спасибо за помощь!