单击时更改命令按钮标签并保持提交

时间:2015-01-28 08:55:02

标签: jsf label commandbutton

我有一个命令按钮

<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;几秒钟。它应该保持到我再次按下按钮。我怎样才能做到这一点?

1 个答案:

答案 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提交并重新呈现按钮后仍保持不变。