WebObjects/Wirehose/动态布局
WireHose 应用程序可以具有多种用户界面外观。这可以用于从单个代码库支持多个品牌关联公司,如应用程序服务提供商环境,或者允许用户个性化其页面的外观,除了个性化其内容。您还可以使用此功能来支持多种输出格式,例如 XML、HDML、SMIL、RSS、RDF 等。
WireHose 应用程序中的每个独立外观都称为布局。布局在名为**布局字典**的文件中定义。您可以以编程方式提供布局字典,或者在命令行上指定布局字典文件的位置。**WHSessionHelper**是用于访问布局字典的主要对象。
默认情况下,WireHose 将使用用户 currentLayout 属性的值来确定要使用的布局。它还可以通过嗅探 HTTP 请求标头自动确定要使用的布局,这对于用户使用手持设备或其他非 HTML 客户端时临时覆盖用户的布局首选项非常有用。
与所有 WebObjects 应用程序一样,WireHose 应用程序由页面和组件组成。您可以为给定布局替换页面和组件;会话帮助程序使用布局字典来确定要使用的组件。每个布局都与一个关联的**WHWrapper**,它定义了该布局的外观。包装器和页面还可以使用**WHArea**组件在页面上定义多个区域。例如,一个三栏布局可以定义三个区域,“左侧”、“中间”和“右侧”,而另一个布局可能只包含一个“主要”区域。通道通过其 areaName 属性映射到特定区域;您可以通过布局字典中的条目将一个布局中的区域映射到另一个布局。
继承自**WHComponent**的组件可以选择通过布局字典解析其绑定,而不是由父组件直接设置。组件的颜色绑定可以在一个区域解析为“蓝色”,而在另一个区域解析为“绿色”,具体取决于当前区域、页面和布局。
**WHSessionHelper**提供了根据会话的语言数组返回本地化字符串的方法,并且将在多个地方查找以解析该值。您可以为特定页面上的特定组件或特定组件或特定页面定义字符串。您还可以为框架中的组件提供默认本地化,这些本地化可以在特定应用程序中被覆盖。您还可以定义布局字典中的非本地化字符串。**WHPropertyBinder**对象用于获取本地化标签和值以绑定到弹出菜单。
**WHDirectAction**提供了一种机制,用于自动检测客户端浏览器中是否启用了 Cookie,并相应地控制会话 ID 是否在 URL 中可见。**WHHyperlink**是一个动态元素,它包含对 URL 重写的支持,类似于 Apache 的 mod_rewrite,但它应用于您的应用程序生成的 URL。这两个类结合在一起,使您的应用程序能够具有干净、可书签的 URL,例如“/WireHoseDemo/MyHomePage”,并且仍然提供个性化会话。
使用 Gary Teter 的许可开始内容。WireHose 和眼球和箭头徽标是 Gary Teter 的商标。