<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CADJEE Consulting &#187; Validator</title>
	<atom:link href="https://cadjee.fr/tag/validator/feed/" rel="self" type="application/rss+xml" />
	<link>https://cadjee.fr</link>
	<description>Expertise Java &#38; Système d&#039;information</description>
	<lastBuildDate>Thu, 17 Dec 2015 21:37:19 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.39</generator>
	<item>
		<title>Validation standard des beans : Validator</title>
		<link>https://cadjee.fr/validation-standard-des-beans-validator/</link>
		<comments>https://cadjee.fr/validation-standard-des-beans-validator/#comments</comments>
		<pubDate>Thu, 19 Feb 2015 13:24:33 +0000</pubDate>
		<dc:creator><![CDATA[Ismael CADJEE]]></dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[validation]]></category>
		<category><![CDATA[Validator]]></category>

		<guid isPermaLink="false">http://cadjee.fr/?p=32</guid>
		<description><![CDATA[La validation d&#8217;un bean (contrôle de surface, taille d&#8217;un champs, valeur obligatoire &#8230;etc) se fait bien souvent de façon manuelle dans une application.  La JSR 303 standardise ce concept de validation avec la notion de validator. Ca se passe ici : javax.validation.*.  Les dépendances Maven nécessaire:  &#160; Un bean Personne bien décoré L&#8217;écriture des annotations est très [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>La validation d&rsquo;un bean (contrôle de surface, taille d&rsquo;un champs, valeur obligatoire &#8230;etc) se fait bien souvent de façon manuelle dans une application.  <strong>La JSR 303 </strong>standardise ce concept de validation avec la notion de <span style="text-decoration: underline;">validator</span>.</p>
<p><span id="more-32"></span>Ca se passe ici :<strong> javax.validation.*. </strong></p>
<p><span style="text-decoration: underline;"><strong>Les dépendances Maven nécessaire: </strong></span></p>
<pre class="brush: java; title: ; notranslate">
&lt;dependency&gt;
   &lt;groupId&gt;javax.validation&lt;/groupId&gt;
   &lt;artifactId&gt;validation-api&lt;/artifactId&gt;
   &lt;version&gt;1.0.0.GA&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
  &lt;groupId&gt;org.hibernate&lt;/groupId&gt;
  &lt;artifactId&gt;hibernate-validator-annotation-processor&lt;/artifactId&gt;
  &lt;version&gt;4.1.0.Final&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
  &lt;groupId&gt;org.slf4j&lt;/groupId&gt;
  &lt;artifactId&gt;slf4j-log4j12&lt;/artifactId&gt;
  &lt;version&gt;1.5.6&lt;/version&gt;
&lt;/dependency&gt;
</pre>
<p>&nbsp;</p>
<p><strong><span style="text-decoration: underline;">Un bean Personne bien décoré</span></strong></p>
<pre class="brush: java; title: ; notranslate"> 
public class Personne{

	@NotNull(message=&quot;le nom est obligatoire&quot;)
	@Size(max=10)
	private String nom;
	@AssertTrue(message=&quot;il faut etre beau&quot;)
	private boolean isBoGoss;
	@Min(value=18, message= &quot;Il faut avoir + de 18 ans&quot;)
	private int age;
	@Past
	private Date datenaissance;
	@Pattern(regexp=&quot;[0-9]{4}&quot;,message=&quot;code CB non valide desolé :-(&quot;)
	private String codeCB;
	
	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}

	public boolean isBoGoss() {
		return isBoGoss;
	}

	public void setBoGoss(boolean isBoGoss) {
		this.isBoGoss = isBoGoss;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Date getDatenaissance() {
		return datenaissance;
	}

	public void setDatenaissance(Date datenaissance) {
		this.datenaissance = datenaissance;
	}

	public String getCodeCB() {
		return codeCB;
	}

	public void setCodeCB(String codeCB) {
		this.codeCB = codeCB;
	}

}

</pre>
<p>L&rsquo;écriture des annotations est très claire et intuitive. On peut également personnaliser le message en cas d&rsquo;erreur. L&rsquo;API se chargera donc de lire ces annotations et d&rsquo;appliquer la règle qu&rsquo;on lui aura spécifiée. Par exemple dans le cas de la date de naissance, l&rsquo;API vérifiera que la date du bean est antérieure à la date courante.</p>
<p><strong><span style="text-decoration: underline;">Validation du Bean</span></strong></p>
<pre class="brush: java; title: ; notranslate">
public static void main(String[] args) throws ParseException {

		Personne p = new Personne();
		p.setNom(&quot;CADJEE&quot;);
		p.setBoGoss(false);
		p.setAge(16);

		SimpleDateFormat simpleDateFormat = new SimpleDateFormat(&quot;dd/MM/yyyy&quot;);
		String date=&quot;19/04/1984&quot;;
		p.setDatenaissance(simpleDateFormat.parse(date));
		p.setCodeCB(&quot;007&quot;);

		ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
		Validator validator = factory.getValidator();

		Set&lt;ConstraintViolation&lt;Personne&gt;&gt; constraintViolations =validator.validate(p);
		StringBuffer sbf = new StringBuffer();
		if (constraintViolations.size() &gt; 0) {
			 sbf.append(&quot;Paramètres invalides : &quot;);
			for (ConstraintViolation&lt;Personne&gt; contraintes : constraintViolations) {
				sbf.append(contraintes.getMessage()).append(&quot; - &quot;);

			}

		}else{
			sbf.append(&quot; tout est ok, circulez! &quot;);
		}

		System.out.println(sbf);
	}
</pre>
<p>La validation passe par l&rsquo;objet <strong>javax.validation.Validator</strong>. On récupère cette objet via la factory ValidatorFactory.  Le Validator stocke l&rsquo;ensemble des erreurs dans un Set. Libre à nous de gérer ces messages à notre guise (Exception,Warning&#8230;etc).<br />
Sachez qu&rsquo;il est également possible de créer notre propre contrainte et annotation de valisation. Je vous laisse découvrir tout cela dans l&rsquo;excellent article: <a title="http://www.jmdoudoux.fr/java/dej/chap-validation_donnees.htm" href="http://www.jmdoudoux.fr/java/dej/chap-validation_donnees.htm" target="_blank">La validation des données</a></p>
]]></content:encoded>
			<wfw:commentRss>https://cadjee.fr/validation-standard-des-beans-validator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
