【问题标题】:SSJS for resource href in themesSSJS 用于主题中的资源 href
【发布时间】:2012-08-16 03:43:24
【问题描述】:

我们有多个应用程序共享单个 CSS 主题。所以我们想把这些通用 CSS 和资源移到通用数据库中,并在主题中动态引用它们。

我可以使用以下硬编码路径引用这些 css:

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

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

我尝试在 Xpage 的 RenderResponse 之前将 designstore db 路径放在 sessionScope 变量中。并在主题中引用范围变量。

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

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

请让我知道我们是否可以计算资源中的 db 路径,或者以任何其他方式使用计算路径从其他数据库引用 CSS 文件。

提前谢谢你。

【问题讨论】:

  • 据我所知,您不能对主题中的资源属性使用任何动态代码。你只能使用硬编码的静态文本,没有别的。

标签: themes xpages


【解决方案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>

我还使用一个函数来确定 value 属性,其中该函数是一个 SSJS 函数,用于在配置文件中查找值:

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

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

【讨论】:

  • Javascript 也无法正常工作。我尝试将 sessionScope 变量放入 xpage 的所有 5 个事件中,但仍然无法正常工作。还有什么办法吗?是否可以在主题中使用数据上下文?像数据源这样的东西?
  • 我添加了一个使用 document.isEditable() 和在主题中使用函数的示例。也许这可以激励你做你想做的事?
  • 感谢您分享代码。是的,控件工作正常, 标签我可以使用 SSJS 或 EL 来获取动态值。但是对于资源它不起作用。我不确定如何将动态值传递给 标签。它不采用 SSJS/EL...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-24
相关资源
最近更新 更多