-1

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;
    }


}
4

2 に答える 2

-1

hibernate-validation を使用する必要があります

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.0.0.Final</version>
</dependency>
于 2013-04-22T10:19:32.387 に答える