2011-09-22 159 views
0

我有一个简单的JSF表单:如何禁用提交按钮,直到按下其他按钮?

<h:form> 
    <h:inputText value="#{textBean.firstName}"/> 
    <h:inputText value="#{textBean.lastName}"/> 
    <h:commandButton value="confirm" action="textBean.confirm"/> 
    <h:commandButton value="submit" action="textBean.submit"/> 
</h:form> 

这是必要的,你点击之前“提交”用户必须按下按钮“确认”。否则,在“submit”按钮旁边会显示一条错误消息。用户不能点击提交按钮,如果没有预先按下确认。在UI的一层上执行它是非常可取的。有人可能会对此提出一些建议?

回答

1

您可能想要更改逻辑,以便点击提交按钮时向用户显示一个确认对话框。简单的东西是这样的:

<h:form> 
    <h:inputText value="#{textBean.firstName}"/> 
    <h:inputText value="#{textBean.lastName}"/> 
    <h:commandButton value="submit" action="#{textBean.submit}" onclick="return confirm('Confirm form submit?');"/> 
</h:form> 

否则,如果你想获得以上您可以禁用提到的行为/隐藏提交按钮,直到用户点击了确认按钮,这样的:

<h:form> 
    <h:inputText value="#{textBean.firstName}"/> 
    <h:inputText value="#{textBean.lastName}"/> 
    <h:commandButton value="confirm" action="#{textBean.confirm}"/> 
    <h:commandButton value="submit" action="#{textBean.submit}" disabled="#{textBean.btnDisabled}"/> 
</h:form> 

的如果要隐藏按钮,则可以使用已渲染的属性替换已禁用的属性。它需要一个布尔值。这个布尔变量可以在您的confirm方法中设置为true,以便在请求返回时启用该按钮。