[JAVA] déplacé! JSF + CDI dans Tomcat et Validation Bean

introduction

Jusqu'à la dernière fois, j'ai créé un paramètre d'environnement pour exécuter JSF + CDI avec Tomcat et une application pour vérifier le fonctionnement. Cette fois, je voudrais ajouter une fonction à ceci et lancer BeanValidation.

Cliquez ici pour la dernière fois-> "Ca a marché! JSF + CDI (Préférences) avec Tomcat"

L'environnement est comme d'habitude:

la mise en oeuvre

La procédure de mise en œuvre est la suivante. Nous ajouterons des fonctions à la précédente application de vérification des opérations.

paramètres maven

Utilisez «ExtVal» de «myfaces». Puisque cela se réfère à validation-api-1.0.0GA, hibernate-validator utilise le "4.3.2.Final légèrement plus ancien".

pom.xml


<dependency>
    <groupId>org.apache.myfaces.extensions.validator.validation-modules</groupId>
    <artifactId>myfaces-extval-bean-validation</artifactId>
    <version>2.0.8</version>
    <scope>compile</scope>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.3.2.Final</version>
    <scope>runtime</scope>
</dependency>

Ajouter une annotation

Nous ajouterons des fonctions à la précédente application de vérification des opérations. Ajoutez les validateurs requis à votre login et mot de passe. Tout d'abord, ajoutez une annotation (@ NotNull) au Bean Index.

InexBean.java


public class IndexBean implements Serializable {

    @NotNull
    private String loginId;

    @NotNull
    private String password;

    //Omis ci-dessous
}

Vient ensuite xhtml (extrait).

index.html


<body>
    <h:messages escape="true" id="messages" showDetail="false" closable="true"/>
    <h:form id="form">
        <br/>
        <h:inputText value="#{index.loginId}" label="Nom d'utilisateur" ph:placeholder="Username" /><br/>
        <h:inputSecret value="#{index.password}" label="mot de passe" ph:placeholder="Password" /><br/>
        <h:commandButton action="#{index.loginEvent()}" value="S'identifier" update="@form" />
    </h:form>
</body>

Jusqu'à ce point, affichez l'écran et appuyez sur le bouton de connexion, ce sera comme suit.

サンプルアプリ

C'est bien, mais j'aimerais rendre le message japonais. ValidationMessage_ja.properties

Créez des propriétés sous src / main / resources.

ValidationMessage_ja.properties


javax.faces.validator.BeanValidator.MESSAGE={0}
javax.validation.constraints.NotNull.message={1}Est obligatoire

Je ne vais pas expliquer en détail, mais la première ligne est le format d'affichage des messages utilisé lorsque JSF exécute la validation de bean. Un message est défini sur {0} et s'affiche à l'écran. La deuxième ligne est le message. La clé correspond à BeanValidation'NotNull`. Pour {1}, la valeur spécifiée par l'attribut label de xhtml est définie. Cette zone est contrôlée par JSF.

Ajoutez ce fichier à faces-config.xml pour le rendre reconnu par JSF.

faces-config.xml


<application>
    <message-bundle>ValidationMessages</message-bundle>
</application>

Achevée

Après avoir implémenté ce qui précède, affichez l'écran et appuyez sur le bouton de connexion. サンプルアプリ

l'a fait ~!

c'est tout.

Autres notes

BeanVaidation est également bon avec bval-jsr. Dans ce cas, placez javaee-api-8.0.4.jar sous tomcat / lib. Ajoutez-le à pom car il est nécessaire pour la compilation. (Cela ne fonctionne pas avec <scope> compile </ scope>. Placez-le dans tomcat / lib.) TomEE est meilleur si vous le faites jusqu'à présent.

pom.xml


<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>8.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.bval</groupId>
    <artifactId>bval-jsr</artifactId>
    <version>2.0.5</version>
</dependency>

référence

MyFaces ExtVal

Recommended Posts

déplacé! JSF + CDI dans Tomcat et Validation Bean
déplacé! JSF + CDI (Préférences) avec Tomcat
Changer les versions de JDK et Tomcat sur CentOS
JSP sur Tomcat
Apache et Tomcat