在主题中添加样式时,styleClass属性始终会被覆盖

时间:2013-08-26 08:41:49

标签: xpages

我正在使用XPage应用程序的主题来设置全局外观和感觉设置,因此viewRoot的配置如下所示:

<control dojoTheme="true">
    <name>ViewRoot</name>
    <property>
        <name>pageIcon</name>
        <value>/favicon.ico</value>
    </property>
    <property>
            <name>style</name>
                <value>#{javascript:
                     var response = facesContext.getExternalContext().getResponse();
                    response.setHeader("X-UA-Compatible", "IE=8");
                }</value>
            </property>
            <property mode="concat">
                <name>styleClass</name>
                <value>claro</value>
            </property>
</control>

虽然我使用mode="concat",我认为刚刚添加(array.concat)我的属性viewRoot,但它总是覆盖它,所以我的<body>看起来像这样:

<body class="claro"...而不是:
<body class="xsp lotusui claro"...

我也遇到了其他<controls>/<properties>的问题。

我目前的解决方案是,我将属性值设置为xsp lotusui claro,而不仅仅是claro,以防止我的身体丢失所有oneui / xsp样式。任何人都知道为什么mode =“concat”在我的例子中不起作用?还是这种模式换别的?

我找不到所有主题属性的良好文档,所以如果有人有一个很好的链接,我会很高兴,如果他可以分享它。

2 个答案:

答案 0 :(得分:0)

编辑: 因为我现在正在制作一个XPages主题,所以我对此更加好奇并且玩了一点。据我所知,你的代码工作得非常好。在我的测试中,我经历过您可以将样式定义连接到预定义的styleClass。因此,您可以创建一个XPage并使用在XPage中预定义的body-styleClass定义这样的正文样式类:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" styleClass="mystyle">
<xp:button value="Label" id="button1" themeId="bt"
    styleClass="oink">
</xp:button>
</xp:view>

使用主题,您现在可以添加另一个(甚至多个)styleClasses:

<control>
    <name>ViewRoot</name>
    <property mode="concat">
        <name>styleClass</name>
        <value>claro</value>
    </property>
</control>

在您的场景中,您想要连接添加为“默认”styleClass的styleClass定义 - 这似乎是一个问题或冲突。 所以,现在这是我的结论。如果有其他人有更多更深刻的见解,我也会对更深入地了解主题和继承感兴趣。

旧评论:
据我所知,要仅添加属性,您应该将控件的override-property设置为false。

示例(您的代码已更改):

<control dojoTheme="true" override="false">
<name>ViewRoot</name>
<property>
    <name>pageIcon</name>
    <value>/favicon.ico</value>
</property>
<property>
        <name>style</name>
            <value>#{javascript:
                 var response = facesContext.getExternalContext().getResponse();
                response.setHeader("X-UA-Compatible", "IE=8");
            }</value>
        </property>
        <property mode="concat">
            <name>styleClass</name>
            <value>claro</value>
        </property>

希望有用和有帮助,

迈克尔

答案 1 :(得分:0)

我知道它已经有一段时间了,但你还记得&#34;延伸&#34;你想要包含原始类的主题?即:

<theme extends="oneui">
  <control….>…</control>…
</theme>