2012-08-16 59 views
1

我们有多个应用程序共享主题的单个CSS。所以我们希望将这些常见的CSS和资源移动到公共数据库中,并动态地将它们引用到主题中。SSJS主题中的资源href

我可以使用下面的硬编码路径是指这些CSS:

<resource> 
    <content-type>text/css</content-type> 
    <href>/.ibmxspres/domino/common/designstore.nsf/custom_layout.css</href> 
</resource> 

这样,它是工作的罚款。但是我们想从配置中获取数据库路径。所以'/common/designstore.nsf'路径不必在主题中进行硬编码。

我试着把designSore数据库路径放在Xpage的sessionScope变量beforeRenderResponse中。并在主题中引用范围var。

<resource> 
    <content-type>text/css</content-type> 
    <href>#{sessionScope.commonCSSPath}</href> 
</resource> 

其中sessionScope.commonCSSPath =“/.ibmxspres/domino/common/designstore.nsf/custom_layout.css”

请让我知道,如果我们可以计算在资源数据库路径,或其他任何使用计算路径从其他数据库中引用CSS文件的方法。

预先感谢您。

+1

据我所知,你不能在主题中使用任何动态代码资源属性。你只能使用硬编码的静态文本,没有别的。 – 2012-08-16 10:12:00

回答

1

尝试计算使用Javascript,而不是EL的href值:

<resource> 
    <content-type>text/css</content-type> 
    <href>#{javascript:sessionScope.commonCSSPath}</href> 
</resource> 

我不知道,如果beforeRenderResponse和时机时主题踢,能够引用一个sessionScope变量,。让我们知道怎么回事。

-

更新:

我用下面的主题确定字段的呈现属性和它的作品:

<control> 
    ... 
    <property> 
     <name>rendered</name> 
     <value>#{javascript:document.isEditable()}</value> 
    </property> 
</control> 

我也用一个函数来确定函数是查找配置文件中的值的SSJS函数的值属性:

<control> 
    ... 
    <property> 
     <name>value</name> 
     <value>#{javascript:getNecessaryValue("SetupProfile", "fieldWithValue")}</value> 
    </property> 
</control> 

希望这可以激励你实现你想要的东西。

+0

Javascript也无法正常工作。我试图把sessionScope变量放在xpage的所有5个事件中,仍然不起作用。任何其他方式?是否有可能在主题中使用datacontext?像数据源的东西? – 2012-08-16 04:59:47

+0

我已经添加了一个使用document.isEditable()和在主题中使用函数的示例。也许这可以激励你做你想做的事情? – 2012-08-16 08:17:41

+1

感谢您分享代码。是的控制工作正常,标签我可以使用SSJS或EL来获取动态值。但对于资源,它不起作用。我不知道如何将动态值传递给标签。它没有采取SSJS/EL ... – 2012-08-16 09:23:01