3 votes

f:validateRequiered ne fonctionne pas comme prévu

Je viens de créer un projet NetBeans avec JSF 2.0 et j'ai un problème avec f:validateRequired. Le bean

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

et la page

<?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>

semble être correct, mais le h:message n'est pas là jusqu'à ce que je fournisse l'attribut requered="true" sur l'inputText. Qu'est-ce qui m'échappe ? Pourquoi la validation ne se produit-elle pas sans l'attribut requered="true" ?

5voto

Papa Points 81

J'ai trouvé la réponse : les champs avec une entrée vide ne sont pas validés du tout par défaut. Si vous souhaitez valider un tel champ, vous devez définir le paramètre required=true . Voir UIInput.validateValue() JavaDoc

Vous pouvez activer la validation des champs vides en définissant le paramètre javax.faces.VALIDATE_EMPTY_FIELDS au paramètre de contexte true . Voir JavaDoc . Après cela, l'exemple ci-dessus fonctionne comme prévu.

2voto

Marcelo Points 132

Je sais que ce post est un peu ancien, mais j'utilise MyFaces et apparemment javax.faces.VALIDATE_EMPTY_FIELDS est fixé à false par défaut.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X