部分刷新时更改按钮样式类

时间:2015-02-20 22:55:20

标签: twitter-bootstrap xpages

我在面板中有一系列按钮(id =“panelButtons”),它嵌套在另一个面板中(id =“panelView”)。目前,每个按钮上的onclick事件设置了一个sessionScope变量,并在panelView上进行了部分刷新。按钮看起来像这样:

<xp:button value="Home" id="button1">
            <xp:this.styleClass>
            <![CDATA[#{javascript:(sessionScope.ssSelectedView == "ccHome.xsp") ? "btn btn-primary btn-xs" : "btn btn-default btn-xs"}]]></xp:this.styleClass>
            <xp:eventHandler event="onclick" submit="true"
                refreshMode="partial" refreshId="panelView">
                <xp:this.action><![CDATA[#{javascript:sessionScope.ssSelectedView = "ccHome.xsp"}]]>
                </xp:this.action>
            </xp:eventHandler>
        </xp:button>
        &#160;
        &#160;
        <xp:button value="Products" id="button2">
            <xp:this.styleClass>
            <![CDATA[#{javascript:(sessionScope.ssSelectedView == "ccProducts.xsp") ? "btn btn-primary btn-xs" : "btn btn-default btn-xs"}]]></xp:this.styleClass>
            <xp:eventHandler event="onclick" submit="true"
                refreshMode="partial" refreshId="panelView">
                <xp:this.action><![CDATA[#{javascript:sessionScope.ssSelectedView = "ccProducts.xsp"}]]>
                </xp:this.action>
            </xp:eventHandler>
        </xp:button>

所以我想要做的是如果设置sessionScope则将按钮显示为btn-primary,否则使用默认值。当页面加载时,sessionScope被设置为“ccHome.xsp”但如果我单击Products按钮,sessionScope会更改,但按钮显示不会。所以看起来样式类只在页面加载上计算。 JavaScript设置为动态运行,因此没有完全刷新的方法可以强制样式类在部分刷新时更改。

编辑: 设置onClick以执行完整更新,它不会更改按钮上的样式类。

1 个答案:

答案 0 :(得分:4)

它不起作用的原因是因为引导主题覆盖了你的styleClass,你需要在按钮上禁用主题

<xp:button value="Home" id="button1" disableTheme="true">