3.6.6. screens.xml (历史版本)

使用从 v.7.0 新 API 写的界面不需要注册。而是通过 @UiController 注解自动发现。

这种类型的文件是在 Web 客户端的通用用户界面中用来注册界面的 XML 描述。

XML schema: http://schemas.haulmont.com/cuba/7.1/screens.xsd。

文件路径通过 cuba.windowConfig 应用程序属性指定。当在 Studio 创建新项目时,会在 web 模块包的根目录创建 web-screens.xml 文件,比如 modules/web/src/com/company/sample/web-screens.xml

这个文件有如下结构:

screen-config – 根节点元素。包含如下元素:

  1. screen – 界面描述元素。

    screen 属性:

    • id – 界面标识符,可以使用程序代码的标识符(比如在 Frame.openWindow() 和其它方法中),也可以是用 menu.xml 中的标识符。

    • template – 界面 XML 描述路径。使用 Resources 接口规则用来加载这些描述文件。

    • class – 如果没设置 template 属性,使用此属性指定实现了 Callable 或者 Runnable 接口的类。

      如果是实现了 Callable 接口,call() 方法应当返回一个 Window 的实例,这个实例会返回给调用段代码,作为 WindowManager.openWindow() 的结果。这个类可以包含带有字符串参数的构造器,通过嵌套的 param 元素定义(参考下面)。

    • agent - 如果使用同一个 id 注册了多个模板(templates),使用这个属性来选择打开哪个模板。有三种标准的代理(agent)类型:DESKTOP 桌面, TABLET 平板, PHONE 手机。这些类型支持按照当前设备和显示参数选择界面模板。参考界面代理了解细节。

    • multipleOpen – 可选属性,允许设置界面可以多次打开。如果没设置或者设置成 false,并且由此标识符定义的界面已经在主窗口打开了,系统会显示已经存在的界面,而不会打开一个新的。如果设置成 true,则可以打开任意数量的界面。

  1. `screen` 的元素:
  2. - `param` map 的形式定义界面参数传入[控制器]($2c937e3fb44f5c17.md)的 `init()` 方法。而通过调用 `openWindow()` 方法传递的参数,会覆盖 `screens.xml` 中定义的相应名称的参数。
  3. `param` 属性:
  4. - `name` 参数名称
  5. - `value` 参数值。字符串类型,如果是 `true` 或者 `false`,则会被转换成相应的 `Boolean` 值。
  1. include – 包含一个不通的文件,比如 screens.xml

    include 属性:

    • file – 按照 Resources 接口规则定义的文件路径。

screens.xml 文件示例:

  1. <screen-config xmlns="http://schemas.haulmont.com/cuba/screens.xsd">
  2. <screen id="sales$Customer.lookup" template="/com/sample/sales/gui/customer/customer-browse.xml"/>
  3. <screen id="sales$Customer.edit" template="/com/sample/sales/gui/customer/customer-edit.xml"/>
  4. <screen id="sales$Order.lookup" template="/com/sample/sales/gui/order/order-browse.xml"/>
  5. <screen id="sales$Order.edit" template="/com/sample/sales/gui/order/order-edit.xml"/>
  6. </screen-config>