【发布时间】:2015-02-27 05:29:23
【问题描述】:
我在一个面板 (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 设置为执行完整更新,它也不会更改按钮上的样式类。
【问题讨论】: