我有一个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
答案 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?