<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Definindo maxSize de forma dinâmica para classes Groovy que implementam Validateable]]></title><description><![CDATA[<p dir="auto">Geralmente nossas classes groovy (DomainClass, Command, DTO) precisam validar o limite de dados dos atributos e quase sempre um valor fixo resolve:</p>
<pre><code>class ControlePessoa {
  
  String nome

  constraints = {
    nome nullable: false, maxSize: 50
  }
}
</code></pre>
<p dir="auto">Embora esse formato seja o mais comum, eventualmente será necessário definir um valor dinâmico para o limite desse atributo.</p>
<p dir="auto"><strong>E como fazemos isso?</strong></p>
<p dir="auto"><em>Definindo um <strong>validator</strong> customizado.</em></p>
<h4><strong>Implementação do validator dentro da própria classe</strong></h4>
<pre><code>class ControlePessoa {
  
  String nome

  constraints = {
    nome nullable: false, validator: { val, obj -&gt;
      boolean possuiIntegracao = new PackIntegracaoAkitaDao().getPossuiIntegracao() == '4'
    
      int maxSize = possuiIntegracao ? 60 : 100
    
      if (val &amp;&amp; val.size() &gt; maxSize) {
        return ['maxSize.exceeded', maxSize]
      }
    
      return null
    
    }
}
</code></pre>
<h4><strong>Implementação do validator em uma classe própria</strong></h4>
<pre><code>class ControlePessoa {
  
  String nome

  constraints = {
    nome nullable: false, validator:  IntegracaoAkitaValidator.maxSize(60, 100)
  }
}

class IntegracaoAkitaValidator {

   static Closure maxSize(int maxSizeComIntegracao, int maxSizeSemIntegracao) {
       return { val, obj -&gt;
           boolean possuiIntegracao = new PackIntegracaoAkitaDao().getPossuiIntegracao() == '4'
           int maxSize = possuiIntegracao ? maxSizeComIntegracao : maxSizeSemIntegracao
           if (val &amp;&amp; val.size() &gt; maxSize) {
               return ['maxSize.exceeded', maxSize]
           }
           return null
       }
   }

}
</code></pre>
]]></description><link>http://insoft-docker1:4567/topic/514/definindo-maxsize-de-forma-dinâmica-para-classes-groovy-que-implementam-validateable</link><generator>RSS for Node</generator><lastBuildDate>Fri, 23 Oct 2026 05:33:21 GMT</lastBuildDate><atom:link href="http://insoft-docker1:4567/topic/514.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 May 2026 20:17:52 GMT</pubDate><ttl>60</ttl></channel></rss>