要加载外部自定义主题,开发人员可以通过在页面中静态声明或使用Core.setThemeRoot()方法来设置此主题。这与对位于不同位置的SAPUI5库使用registerModulePath()非常相似。下面是具体的操作步骤:(1)使用如下代码告诉SAPUI5框架我们自定义主题的地址。sap.ui.getCore().setThemeRoot("my_theme","http://url.to/the/root/dir");SAPUI5然后从此URL加载所有主题资源。比如sap.ui.core库的library.css文件,上面的代码执行后变成:http://url.to/the/root/dir/sap/ui/core/themes/my_theme/library.cssbase目录也可以通过core.applyTheme(...)方法的第二个参数指定。如果主题的某些部分位于不同的位置,您可以使用上面的调用来设置默认值,但通过在数组中将它们指定为第二个参数来覆盖库特定的主题位置:sap.ui.getCore()。setThemeRoot("my_theme",["my.lib.one","my.lib.two"],"http://url.to/the/other/root/dir");以下是主题的不同设置实现方法:(1)在SAPUI5bootstrap脚本的属性中使用与JSON字符串相同的对象结构:(2)通过URL参数指定:http://myserver.com/sap/myapp/?sap-ui-theme=my-theme@/sap/public/bc/themes/~client-111(3)通过全局配置对象指定.在引导脚本之前插入以下代码:","my_second_preconfigured_theme":{"":"http://preconfig.com/ui5-themes","sap.ui.core":"http://core.com/ui5"}}}上面代码实现的效果:从指定位置加载所有库的第一个主题。从指定位置加载sap.ui.core库的第二个主题。对于所有其他库,主题是从默认位置加载的。通过sap-ui-theme/sap-themeURL参数配置带有themeRootURL的主题时,存在一些安全限制。默认情况下,与当前页面不同的绝对URL会被阻止。路径段将相对于当前页面原点值进行解析。根据RFC6454,要通过URL参数允许某些来源来源,可以将标记添加到页面的
: