我有一个使用应用程序布局控件的应用程序。UI 在标题栏部分定义了两个选项卡。UI 的侧边栏中还包含一个 Navigator 控件,允许用户选择链接以打开其他页面。我遇到的麻烦是当用户单击当前导航器中的链接时,将当前选项卡设置为活动选项卡。
2 回答
应用程序布局控件的“配置”属性是一个复杂类型,它反过来支持定义布局本身的所有属性。这些属性之一是“navigationPath”。如果 Netflix 在其网站上使用此控件,则在查看捉鬼敢死队的电影信息页面时该属性的值可能类似于:
/home/genres/comedies/541018
因此,可以将此属性视为使用 *nix 文件路径语法在“站点地图”中描述页面当前位置的一种方式。
每个titleBarTab也是一个复杂类型;它的属性之一是“选择”。此属性旨在被赋予一个与整体布局的当前导航路径的部分或全部匹配的值。因此,继续 Netflix 示例,您可以像这样定义标签:
<xe:this.titleBarTabs>
<xe:pageTreeNode
page="/genre.xsp"
label="Action"
queryString="genre=action"
selection="/home/genres/action/*" />
<xe:pageTreeNode
page="/genre.xsp"
label="Comedy"
queryString="genre=comedies"
selection="/home/genres/comedies/*" />
<xe:pageTreeNode
page="/genre.xsp"
label="Drama"
queryString="genre=dramas"
selection="/home/genres/dramas/*" />
</xe:this.titleBarTabs>
然后,在 Ghostbusters 的页面上,因为布局的 navigationPath 属性与为 pageTreeNode 的 selection 属性定义的模式匹配,标签为“Comedy”,所以该选项卡将显示为已选中,但其他选项卡不会。
另外可能值得注意的是布局配置还包括一个名为“defaultNavigationPath”的属性。如果 navigationPath 属性没有值,则此属性的值将与每个 titleBarTab 的 selection 属性进行比较。因此,您通常希望将其设置为会导致第一个选项卡显示为选中的路径。
布鲁斯,如果我没看错的话,不久前我遇到了类似的问题。这有帮助吗?为 TitleBar 选项卡设置 sessionScope 变量