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 中的标识符。

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

  • 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 属性:

  1. -

name – 参数名称

  1. -

value – 参数值。字符串类型,如果是 true 或者 false,则会被转换成相应的 Boolean 值。

  • 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>