JSF 検証が機能しない 送信すると、myfaces(2.1.10) と mojarra(2.1.21) の下で同じ結果が試行されました。ここに私のコードがあります。理論的には onSubmit() を実行せず、m_name にエラー メッセージを表示します。しかし、実際には onSubmit() を実行し、エラーメッセージを表示しません。
template.xhtml
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:rich="http://richfaces.org/rich">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Cache-Control" content="no-cache" />
<title>Title</title>
</h:head>
<h:body>
<ui:insert name="body"></ui:insert>
</h:body>
</html>
テンプレート クライアント ファイル templatevalidation.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
template="/template.xhtml">
<ui:define name="body">
<h:form>
<div>
<h:inputText id="name" value="#{templateBean.name}">
<f:validateRequired />
<f:validateLength minimum="5" />
</h:inputText>
<h:message id="m_name" for="name" />
</div>
<div>
<h:commandButton action="#{templateBean.onSubmit}" value="submit">
<f:ajax execute="name" render="m_name" />
</h:commandButton>
</div>
</h:form>
</ui:define>
</ui:composition>
ここに私のBean TemplateBean.class があります
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean
@ViewScoped
public class TemplateBean implements Serializable{
private static final long serialVersionUID = 9009393522101806766L;
private String name;
public void onSubmit(){
System.out.println("Name: " + name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}