3.6.6. screens.xml (遗留版本)
使用从 v.7.0 新 API 写的界面不需要注册。而是通过 @UiController 注解自动发现。 |
这种类型的文件是在 Web 客户端的通用用户界面中用来注册界面的 XML 描述。
XML schema: http://schemas.haulmont.com/cuba/7.0/screens.xsd。
文件路径通过 cuba.windowConfig 应用程序属性指定。当在 Studio 创建新项目时,会在 web 模块包的根目录创建 web-screens.xml
文件,比如 modules/web/src/com/company/sample/web-screens.xml
。
这个文件有如下结构:
screen-config
– 根节点元素。包含如下元素:
screen
– 界面描述元素。
screen
属性:
id
– 界面标识符,可以使用程序代码的标识符(比如在Frame.openWindow()
和其它方法中),也可以是用 menu.xml 中的标识符。class
– 如果没设置template
属性,使用此属性指定实现了Callable
或者Runnable
接口的类。
如果是实现了 Callable
接口,call()
方法应当返回一个 Window
的实例,这个实例会返回给调用段代码,作为 WindowManager.openWindow()
的结果。这个类可以包含带有字符串参数的构造器,通过嵌套的 param
元素定义(参考下面)。
agent
- 如果使用同一个id
注册了多个模板(templates),使用这个属性来选择打开哪个模板。有三种标准的代理(agent)类型:DESKTOP
桌面,TABLET
平板,PHONE
手机。这些类型支持按照当前设备和显示参数选择界面模板。参考界面代理了解细节。multipleOpen
– 可选属性,允许设置界面可以多次打开。如果没设置或者设置成false
,并且由此标识符定义的界面已经在主窗口打开了,系统会显示已经存在的界面,而不会打开一个新的。如果设置成true
,则可以打开任意数量的界面。
screen
的元素:
param
– 以 map 的形式定义界面参数传入控制器的init()
方法。而通过调用openWindow()
方法传递的参数,会覆盖screens.xml
中定义的相应名称的参数。
param
属性:
-
name
– 参数名称
-
value
– 参数值。字符串类型,如果是 true
或者 false
,则会被转换成相应的 Boolean
值。
include
– 包含一个不通的文件,比如screens.xml
。
include
属性:
file
– 按照 Resources 接口规则定义的文件路径。
screens.xml
文件示例:
<screen-config xmlns="http://schemas.haulmont.com/cuba/screens.xsd">
<screen id="sales$Customer.lookup" template="/com/sample/sales/gui/customer/customer-browse.xml"/>
<screen id="sales$Customer.edit" template="/com/sample/sales/gui/customer/customer-edit.xml"/>
<screen id="sales$Order.lookup" template="/com/sample/sales/gui/order/order-browse.xml"/>
<screen id="sales$Order.edit" template="/com/sample/sales/gui/order/order-edit.xml"/>
</screen-config>