<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Commentaires sur : Grails étape 2: itérer une collection et afficher le résultat</title>
	<atom:link href="http://www.touilleur-express.fr/2009/12/29/grails-etape-2-iterer-une-collection-et-afficher-le-resultat/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.touilleur-express.fr/2009/12/29/grails-etape-2-iterer-une-collection-et-afficher-le-resultat/</link>
	<description>Blog sur Java, le métier de développeur et la vie de freelance par Nicolas Martignole</description>
	<lastBuildDate>Wed, 08 Feb 2012 17:18:52 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Par : Piwaï</title>
		<link>http://www.touilleur-express.fr/2009/12/29/grails-etape-2-iterer-une-collection-et-afficher-le-resultat/comment-page-1/#comment-1019</link>
		<dc:creator>Piwaï</dc:creator>
		<pubDate>Mon, 04 Jan 2010 08:34:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=2727#comment-1019</guid>
		<description>Merci pour ces réponses détaillée... je crois bien que je vais investir dans le papier :-)</description>
		<content:encoded><![CDATA[<p>Merci pour ces réponses détaillée&#8230; je crois bien que je vais investir dans le papier <img src='http://www.touilleur-express.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Christophe Furmaniak</title>
		<link>http://www.touilleur-express.fr/2009/12/29/grails-etape-2-iterer-une-collection-et-afficher-le-resultat/comment-page-1/#comment-1018</link>
		<dc:creator>Christophe Furmaniak</dc:creator>
		<pubDate>Thu, 31 Dec 2009 08:49:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=2727#comment-1018</guid>
		<description>@Piwaï: Grails propose les dynamic finders, qui sont effectivement limités à l&#039;équivalent d&#039;une clause where sur 2 colonnes d&#039;une même table. Puis, le Query By Example, mais là encore, ce n&#039;est pas tjs suffisant. Pour aller plus loin, voir la notion de &lt;a href=&quot;http://grails.org/doc/latest/guide/5.%20Object%20Relational%20Mapping%20(GORM).html#5.4.2%20Criteria&quot; rel=&quot;nofollow&quot;&gt;Criteria&lt;/a&gt; où là tu peux te lacher. Tu peux aussi directement du &lt;a href=&quot;http://grails.org/doc/latest/guide/5.%20Object%20Relational%20Mapping%20(GORM).html#5.4.3%20Hibernate%20Query%20Language%20(HQL)&quot; rel=&quot;nofollow&quot;&gt;Hibernate Query Language&lt;/a&gt;.

Je conseille vivement l&#039;investissement dans &lt;a href=&quot;http://www.manning.com/gsmith/&quot; rel=&quot;nofollow&quot;&gt;Grails In Action&lt;/a&gt; pour ceux qui ont envie d&#039;en savoir plus. De plus, y a souvent des promos chez &lt;a href=&quot;http://www.manning.com/&quot; rel=&quot;nofollow&quot;&gt;Manning&lt;/a&gt; en cette periode de fête (ex: hier, Groovy in action Rev 2 pour 10$). Aujourd&#039;hui (le 31/12), 50% sur tous les bouquins Spring =&gt; http://archive.constantcontact.com/fs043/1101335703814/archive/1102861583978.html (dont Groovy et Grails in action)</description>
		<content:encoded><![CDATA[<p>@Piwaï: Grails propose les dynamic finders, qui sont effectivement limités à l&#8217;équivalent d&#8217;une clause where sur 2 colonnes d&#8217;une même table. Puis, le Query By Example, mais là encore, ce n&#8217;est pas tjs suffisant. Pour aller plus loin, voir la notion de <a href="http://grails.org/doc/latest/guide/5.%20Object%20Relational%20Mapping%20(GORM).html#5.4.2%20Criteria" rel="nofollow">Criteria</a> où là tu peux te lacher. Tu peux aussi directement du <a href="http://grails.org/doc/latest/guide/5.%20Object%20Relational%20Mapping%20(GORM).html#5.4.3%20Hibernate%20Query%20Language%20(HQL)" rel="nofollow">Hibernate Query Language</a>.</p>
<p>Je conseille vivement l&#8217;investissement dans <a href="http://www.manning.com/gsmith/" rel="nofollow">Grails In Action</a> pour ceux qui ont envie d&#8217;en savoir plus. De plus, y a souvent des promos chez <a href="http://www.manning.com/" rel="nofollow">Manning</a> en cette periode de fête (ex: hier, Groovy in action Rev 2 pour 10$). Aujourd&#8217;hui (le 31/12), 50% sur tous les bouquins Spring =&gt; <a href="http://archive.constantcontact.com/fs043/1101335703814/archive/1102861583978.html" rel="nofollow">http://archive.constantcontact.com/fs043/1101335703814/archive/1102861583978.html</a> (dont Groovy et Grails in action)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Nicolas Martignole</title>
		<link>http://www.touilleur-express.fr/2009/12/29/grails-etape-2-iterer-une-collection-et-afficher-le-resultat/comment-page-1/#comment-1017</link>
		<dc:creator>Nicolas Martignole</dc:creator>
		<pubDate>Wed, 30 Dec 2009 23:10:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=2727#comment-1017</guid>
		<description>@Piwaï : Grails introduit ce que l&#039;on appelle &quot;Query by Example&quot; QBE. Imaginons que tu cherches l&#039;ensemble des utilisateurs correspondant à trois critères ou plus. Il te suffit de créer un Contact que l&#039;on appelle userLikePiwai par exemple:
def userLikePiwai = new Contact(nom:&#039;waï&#039;, prenom:&#039;pierre&#039;, email: &#039;piwai@test.fr&#039;)

et ensuite de t&#039;en servir pour lancer une recherche
  def listOfResults= Contact.findAll(userLikePiwai)

Le principe est donc de créer un objet et de placer les attributs de cet objet comme étant des critères de restriction, puis de le passer à la méthode find ou findAll.

Ensuite tu peux aller plus loin et utiliser le moteur de construction. Disons que tu souhaites la liste des Pierre M* dont la date de naissance est dans une plage de valeur. Voilà ce que cela donne :

  def entries = Contact.createCriteria().list {
      like(&#039;nom&#039;, &#039;M%&#039;)
      and {
        between(&#039;dateNaissance&#039;,new Date()-50,new Date())
        eq(&#039;prenom&#039;, &#039;Pierre&#039;)
      }
      maxResults(10)
      order(&#039;nom&#039;, &#039;desc&#039;)
    }

Enfin tu peux utiliser le langage HQL directement si tu préfères, mais je trouve cela moins lisible.
Regarde
http://www.grails.org/Hibernate+Criteria+Builder</description>
		<content:encoded><![CDATA[<p>@Piwaï : Grails introduit ce que l&#8217;on appelle &laquo;&nbsp;Query by Example&nbsp;&raquo; QBE. Imaginons que tu cherches l&#8217;ensemble des utilisateurs correspondant à trois critères ou plus. Il te suffit de créer un Contact que l&#8217;on appelle userLikePiwai par exemple:<br />
def userLikePiwai = new Contact(nom:&#8217;waï&#8217;, prenom:&#8217;pierre&#8217;, email: &#8216;piwai@test.fr&#8217;)</p>
<p>et ensuite de t&#8217;en servir pour lancer une recherche<br />
  def listOfResults= Contact.findAll(userLikePiwai)</p>
<p>Le principe est donc de créer un objet et de placer les attributs de cet objet comme étant des critères de restriction, puis de le passer à la méthode find ou findAll.</p>
<p>Ensuite tu peux aller plus loin et utiliser le moteur de construction. Disons que tu souhaites la liste des Pierre M* dont la date de naissance est dans une plage de valeur. Voilà ce que cela donne :</p>
<p>  def entries = Contact.createCriteria().list {<br />
      like(&#8216;nom&#8217;, &#8216;M%&#8217;)<br />
      and {<br />
        between(&#8216;dateNaissance&#8217;,new Date()-50,new Date())<br />
        eq(&#8216;prenom&#8217;, &#8216;Pierre&#8217;)<br />
      }<br />
      maxResults(10)<br />
      order(&#8216;nom&#8217;, &#8216;desc&#8217;)<br />
    }</p>
<p>Enfin tu peux utiliser le langage HQL directement si tu préfères, mais je trouve cela moins lisible.<br />
Regarde<br />
<a href="http://www.grails.org/Hibernate+Criteria+Builder" rel="nofollow">http://www.grails.org/Hibernate+Criteria+Builder</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Le Touilleur Express &#187; Blog Archive &#187; Grails étape 3 : Boostrap, XML, JSON, Ajax et création d&#8217;un GTag</title>
		<link>http://www.touilleur-express.fr/2009/12/29/grails-etape-2-iterer-une-collection-et-afficher-le-resultat/comment-page-1/#comment-1016</link>
		<dc:creator>Le Touilleur Express &#187; Blog Archive &#187; Grails étape 3 : Boostrap, XML, JSON, Ajax et création d&#8217;un GTag</dc:creator>
		<pubDate>Wed, 30 Dec 2009 22:39:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=2727#comment-1016</guid>
		<description>[...] Grails étape 2: itérer une collection et afficher le résultat  [...]</description>
		<content:encoded><![CDATA[<p>[...] Grails étape 2: itérer une collection et afficher le résultat  [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Piwaï</title>
		<link>http://www.touilleur-express.fr/2009/12/29/grails-etape-2-iterer-une-collection-et-afficher-le-resultat/comment-page-1/#comment-1015</link>
		<dc:creator>Piwaï</dc:creator>
		<pubDate>Wed, 30 Dec 2009 15:03:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=2727#comment-1015</guid>
		<description>Encore un article très intéressant sur le sujet, merci!

&quot;Il est possible de combiner 2 attributs de la classe Contact au maximum&quot; =&gt; et si j&#039;en veux 3 ? Je dois coder ma méthode ? C&#039;est parce que ça fait des noms trop longs à lire ?

Symfony/Propel (Php) propose ce type de finder, avec en prime des notions de jointures pour tout récupérer d&#039;un coup, du genre : findAllJoinAddress, findAllJoinAll, findAllJoinAllExceptAddress ...

Par pure curiosité... ça existe en Grails ?</description>
		<content:encoded><![CDATA[<p>Encore un article très intéressant sur le sujet, merci!</p>
<p>&laquo;&nbsp;Il est possible de combiner 2 attributs de la classe Contact au maximum&nbsp;&raquo; =&gt; et si j&#8217;en veux 3 ? Je dois coder ma méthode ? C&#8217;est parce que ça fait des noms trop longs à lire ?</p>
<p>Symfony/Propel (Php) propose ce type de finder, avec en prime des notions de jointures pour tout récupérer d&#8217;un coup, du genre : findAllJoinAddress, findAllJoinAll, findAllJoinAllExceptAddress &#8230;</p>
<p>Par pure curiosité&#8230; ça existe en Grails ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Nicolas Martignole</title>
		<link>http://www.touilleur-express.fr/2009/12/29/grails-etape-2-iterer-une-collection-et-afficher-le-resultat/comment-page-1/#comment-1014</link>
		<dc:creator>Nicolas Martignole</dc:creator>
		<pubDate>Wed, 30 Dec 2009 12:38:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=2727#comment-1014</guid>
		<description>@Christophe : tu as tout juste, merci pour le complément d&#039;information. J&#039;y ai passé quelques heures et j&#039;avoue qu&#039;à la fin de l&#039;article j&#039;ai un peu relaché les explications et les détails. C&#039;est long à écrire ce genre d&#039;article, on ne s&#039;en rend pas très bien compte.</description>
		<content:encoded><![CDATA[<p>@Christophe : tu as tout juste, merci pour le complément d&#8217;information. J&#8217;y ai passé quelques heures et j&#8217;avoue qu&#8217;à la fin de l&#8217;article j&#8217;ai un peu relaché les explications et les détails. C&#8217;est long à écrire ce genre d&#8217;article, on ne s&#8217;en rend pas très bien compte.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Christophe Furmaniak</title>
		<link>http://www.touilleur-express.fr/2009/12/29/grails-etape-2-iterer-une-collection-et-afficher-le-resultat/comment-page-1/#comment-1013</link>
		<dc:creator>Christophe Furmaniak</dc:creator>
		<pubDate>Wed, 30 Dec 2009 10:56:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=2727#comment-1013</guid>
		<description>Pendant que j&#039;y suis, pour la partie sur l&#039;opérateur elvis, je ne vois pas le rapport avec le code que tu expliques (où je ne vois pas apparaitre l&#039;opérateur elvis mais l&#039;utilisation classique du condition ? sivrai:sifaux. Par contre, tu peux parler de Groovy Truth, parce qu&#039;en java, params.get(toto) ça va pas tout le temps retourner un boolean, alors qu&#039;avec Groovy, params.toto , oui.)

http://docs.codehaus.org/display/GROOVY/Groovy+Truth
http://mrhaki.blogspot.com/2009/08/groovy-goodness-elvis-operator.html
http://mrhaki.blogspot.com/

(je pense que tu avais peut-être l&#039;opérateur elvis dans ton code de départ mais que tu as du forcer le type de retour...et du coup, elvis is gone)</description>
		<content:encoded><![CDATA[<p>Pendant que j&#8217;y suis, pour la partie sur l&#8217;opérateur elvis, je ne vois pas le rapport avec le code que tu expliques (où je ne vois pas apparaitre l&#8217;opérateur elvis mais l&#8217;utilisation classique du condition ? sivrai:sifaux. Par contre, tu peux parler de Groovy Truth, parce qu&#8217;en java, params.get(toto) ça va pas tout le temps retourner un boolean, alors qu&#8217;avec Groovy, params.toto , oui.)</p>
<p><a href="http://docs.codehaus.org/display/GROOVY/Groovy+Truth" rel="nofollow">http://docs.codehaus.org/display/GROOVY/Groovy+Truth</a><br />
<a href="http://mrhaki.blogspot.com/2009/08/groovy-goodness-elvis-operator.html" rel="nofollow">http://mrhaki.blogspot.com/2009/08/groovy-goodness-elvis-operator.html</a><br />
<a href="http://mrhaki.blogspot.com/" rel="nofollow">http://mrhaki.blogspot.com/</a></p>
<p>(je pense que tu avais peut-être l&#8217;opérateur elvis dans ton code de départ mais que tu as du forcer le type de retour&#8230;et du coup, elvis is gone)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Christophe Furmaniak</title>
		<link>http://www.touilleur-express.fr/2009/12/29/grails-etape-2-iterer-une-collection-et-afficher-le-resultat/comment-page-1/#comment-1012</link>
		<dc:creator>Christophe Furmaniak</dc:creator>
		<pubDate>Wed, 30 Dec 2009 10:45:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=2727#comment-1012</guid>
		<description>me semble qu&#039;il manque un chouia d&#039;explication sur la partie pagination:
=&gt; Tu dis que listOrderBy() cherche automatiquement une clé max dans la map passée en paramètre, mais ça ne suffit pas :). la méthode prend aussi automatiquement en compte l&#039;offset (et l&#039;order asc/desc), parce que sinon ta pagination elle va pas bien fonctionner me semble, non?

Pour ceux que ça interesse: http://grails.org/doc/latest/ref/Domain%20Classes/listOrderBy.html et http://grails.org/doc/latest/ref/Domain%20Classes/list.html</description>
		<content:encoded><![CDATA[<p>me semble qu&#8217;il manque un chouia d&#8217;explication sur la partie pagination:<br />
=&gt; Tu dis que listOrderBy() cherche automatiquement une clé max dans la map passée en paramètre, mais ça ne suffit pas <img src='http://www.touilleur-express.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . la méthode prend aussi automatiquement en compte l&#8217;offset (et l&#8217;order asc/desc), parce que sinon ta pagination elle va pas bien fonctionner me semble, non?</p>
<p>Pour ceux que ça interesse: <a href="http://grails.org/doc/latest/ref/Domain%20Classes/listOrderBy.html" rel="nofollow">http://grails.org/doc/latest/ref/Domain%20Classes/listOrderBy.html</a> et <a href="http://grails.org/doc/latest/ref/Domain%20Classes/list.html" rel="nofollow">http://grails.org/doc/latest/ref/Domain%20Classes/list.html</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>

