我在面板中有一系列按钮(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>
 
 
<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以执行完整更新,它不会更改按钮上的样式类。
答案 0 :(得分:4)
它不起作用的原因是因为引导主题覆盖了你的styleClass,你需要在按钮上禁用主题
<xp:button value="Home" id="button1" disableTheme="true">