想要自动计算 XPage 上的 pageTitle 属性以简单地显示 XPage 名称。 我想在应用程序布局自定义控件上编写一次代码,以便我添加该控件的每个页面都可以从属性计算中受益。到目前为止,我的 CC 上有一些 SSJS 来计算页面标题并分配给 viewScope 变量:
var path:String = context.getUrl().getPath();
var xpageName:String = @RightBack(path,"/");
viewScope.xpageName = xpageName;
return xpageName
在添加 CC 的任何 XPage 上,我可以简单地将 viewScope 变量的值返回到 pageTitle 属性,如下所示:
viewScope.xpageName
但是,我想知道如何从 CC 自动设置它,而不需要上面的行。 这可以吗?
您还可以在主题中设置页面标题。 Julian Buss 网站上的此页面显示了默认值 http://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_themes 的代码。由于 override 设置为 false,因此您可以在您选择的任何自定义控件或 XPage 上覆盖它。这是我在所有应用程序中设置的主题属性之一。
您可以按照 Declan 在自定义控件的“所有属性”属性中所说的那样执行此操作。我更喜欢使用这样的控制块将其放入数据库主题中:
<control override="true">
<name>ViewRoot</name>
<property>
<name>pageTitle</name>
<value>#{javascript:
var path:String = context.getUrl().getPath();
var xpageName:String = @RightBack(path,"/");
viewScope.xpageName = xpageName;
return xpageName
}</value>
</property>
</control>
这会强制您的代码对数据库中传递的所有 XPage 使用 ssjs 代码。我实际上更喜欢返回值是:
return database.getTitle() + " : " + xpageName;
在自定义控件的“所有属性”面板中,有一个可以使用的“pageTitle”属性。设置后,只要主 XPage 上没有设置 pageTitle 属性,并且同一页面上没有其他自定义控件设置该属性,它将用于页面的标题。