3.5.16. Web 客户端基础设施
Web 客户端block的通用用户界面基于 Vaadin 框架实现。Web 客户端基础设施中可用的主要类如下所述。
Figure 27. Web 客户端基础设施类
App
- 应用程序基础设施的中心类。包含指向Connection
和其它基础设施对象的引用。对于给定的 HTTP 会话,只存在一个App
实例。可以使用App.getInstance()
静态方法获取App
实例的引用。如果要在项目中自定义App
的功能,请在 web 模块的根包中创建一个类继承DefaultApp
,并将其作为cuba_App
bean 注册在 web-spring.xml中,例如:
<bean name="cuba_App" class="com.company.sample.web.MyApp" scope="vaadin"/>
Connection
是一个接口,此接口提供连接到中间件和保持用户会话的功能。ConnectionImpl
是此接口的标准实现。ExceptionHandlers
类包含客户端级(client-level)异常处理器的集合。AppUI
是一个继承com.vaadin.ui.UI
类的平台类。对于 Web 浏览器打开的每个标签页,都有一个此类的实例。它包含指向TopLevelWindow
实现( 登录窗口或主窗口) 的链接,具体取决于连接状态。可以使用AppUI.getCurrent()
静态方法获取对当前浏览器标签页的AppUI
的引用。AppLoginWindow
– 在用户登录之前显示的窗口。可以通过继承AppLoginWindow
来自定义登录窗口,或者通过继承AbstractWindow创建全新的登录窗口。Studio 中,在 CUBA 项目树中选择 Generic UI > Screens 部分然后点击 New > Screen。然后在 Legacy Screen Templates 标签页选择 Login window 模板。如果在自定义类中重写了init()
方法,确保调用了super.init(params)
方法。AppMainWindow
– 用户登录后显示的主应用程序窗口。可以通过继承AppMainWindow
来自定义主窗口,或者通过继承AbstractMainWindow
并在 XML 描述中定义所需的布局来创建全新的主窗口。Studio 中,在 CUBA 项目树中选择 Generic UI > Screens 部分然后点击 New > Screen。然后在 Legacy Screen Templates 标签页选择 Main window 模板。如果在自定义类中重写了init()
方法,确保调用了super.init(params)
方法。
可以使用以下应用程序属性控制某些主窗口参数,而无需重新定义默认实现:
cuba.web.appWindowMode – 设置主窗口的默认模式:多标签或单界面(
TABBED
或SINGLE
)。用户后续可以使用 Help > Settings 界面更改模式。cuba.web.maxTabCount – 当主窗口处于标签页模式时,此属性设置用户可以打开的最大标签页数量。默认值为 7。
如果要处理浏览器的 Back 按钮,请在 TopLevelWindow
(登录窗口或主窗口)中实现 CubaHistoryControl.HistoryBackHandler
接口。如果cuba.web.allowHandleBrowserHistoryBack应用程序属性设置为 true,则会调用这个接口实现的 onHistoryBackPerformed()
方法而不是浏览器的标准行为。