我刚刚用JSF 2.0创建了一个NetBeans项目,我遇到了f:validateRequired的问题。豆子
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class TestBean {
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String action() {
return "test";
}
}
和页面
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Test</title>
<h:outputStylesheet name="css/stylesheet.css" />
</h:head>
<h:body>
<h:form>
<div id="content">
Value:
<h:message for="test" />
<h:inputText value="#{testBean.value}" id="test">
<f:validateRequired />
</h:inputText>
<br/>
<h:commandButton action="#{testBean.action}" value="Action" />
</div>
</h:form>
</h:body>
</html>
似乎没问题,但是直到我在inputText上提供了requered =“true”属性才会出现h:消息。我错过了什么?为什么验证不会出现在requered =“true”属性之外?
答案 0 :(得分:5)
我想出了答案:默认情况下,根本没有验证具有空输入的字段。如果您想验证此类字段,则必须设置required=true
。见UIInput.validateValue() JavaDoc
您可以通过将javax.faces.VALIDATE_EMPTY_FIELDS
上下文参数设置为true
来启用空字段的验证。见JavaDoc。完成后,上面的示例按预期工作。
答案 1 :(得分:2)
我知道这篇文章有点陈旧,但我正在使用MyFaces,显然javax.faces.VALIDATE_EMPTY_FIELDS
默认设置为false。