我有一个命令按钮
<h:commandButton class="go" id="flashwareSelectBUTTON" value="Show" action="#{currentCompatibilityRow.selectFlashwareItem}" onclick="changeLabel(this);">
我想将按钮的文字更改为&#34;隐藏&#34;点击,功能是:
<script type="text/javascript" language="javascript">
function changeLabel(buttonLabel) {
if (buttonLabel.value=="Show")
buttonLabel.value="Hide"
else
buttonLabel.value="Show"
}
</script>
问题是标签改为&#34;隐藏&#34;几秒钟。它应该保持到我再次按下按钮。我怎样才能做到这一点?
答案 0 :(得分:0)
我认为问题是因为,您的javascript正在成功更改标签,但您的h:commandButton
会在操作完成后重新呈现。
一种方法是使用f:ajax
并通过ajax提交您的h:form
。如果您这样做,那么在操作完成后,您的Javascript更改将不会重置。
<h:commandButton value="Show" onclick="changeLabel(this);" ...>
<f:ajax/>
</h:commandButton>
如果这不起作用,那么第二个解决方案是:
您也可以从value
获得ManagedBean
。
<h:commandButton value="#{managedBean.btnTxt}" ... />
您还需要使用Javascript,因为在您的操作方法完成之前将调用onclick
。
因此,您必须更改onclick
的javascript值,并在操作结束时更改值btnTxt
,即使在h:form
提交并重新呈现按钮后仍保持不变。