调用action之前的JSF1.2 commandButton验证

时间:2015-01-22 13:21:08

标签: javascript jquery jsf jsf-1.2

我有一个commandButton:

<h:commandButton  onclick="validate();" action="#{method.exitBtn}" value="Move File"></h:commandButton>

但是,在调用动作之前,我想确保选择SELECT中的值:

<select>
    <option value="Select Amount">Select Amount</option>
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
    <option value="D">D</option>
    <option value="E">E</option>
</select>

我尝试添加onclick =“validate();”在我的JS中:

function validate() {
    alert("you clicked!");
}

但是,警报永远不会显示。我正在使用JSF 1.2

1 个答案:

答案 0 :(得分:1)

似乎你错过了JSF的观点。 JSF提供了生成HTML输出的组件和整个生命周期,用于执行收集提交的值,转换和验证它们以及将它们设置为bean属性。默认情况下,当JSF管理的验证失败时,JSF bean操作已经

重写您的表单符合以下基本示例:

<h:form>
    <h:selectOneMenu value="#{bean.amount}" required="true">
        <f:selectItem itemValue="#{null}" itemLabel="Select Amount" />
        <f:selectItem itemValue="A" />
        <f:selectItem itemValue="B" />
        <f:selectItem itemValue="C" />
        <f:selectItem itemValue="D" />
        <f:selectItem itemValue="E" />
    </h:selectOneMenu>
    <h:commandButton value="Submit" action="#{bean.submit}" />
    <h:messages />
</h:form>

使用此托管bean:

public class Bean {

    private String amount; // +getter+setter

    public void submit() {
        System.out.println("Submitted amount: " + amount);
        // ...
    }

    // ...
}

JSF提供的required="true"属性将根据需要验证输入组件。如果验证失败,则任何消息都将显示在与该组件相关联的<h:message>或一般<h:messages>的消息中,如示例所示。

当客户端禁用JS时,无需进行jQuery / JS验证。如果你真的想坚持使用简单的HTML / JS,那么你应该重新考虑为什么要使用JSF。另请参阅What is the need of JSF, when UI can be achieved from CSS, HTML, JavaScript, jQuery?