Al usar Grails, el código SGP para representar cada campo de formulario se ve algo como esto:Haciendo secador de Grails forma de desarrollo
<tr class="prop">
<td valign="top" class="name"><label for="username">Login Name:</label></td>
<td valign="top" class="value ${hasErrors(bean: person, field: 'username', 'errors')}">
<input type="text" id="username" name="username" value="${person.username?.encodeAsHTML()}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name"><label for="userRealName">Full Name:</label></td>
<td valign="top" class="value ${hasErrors(bean: person, field: 'userRealName', 'errors')}">
<input type="text" id="userRealName" name="userRealName" value="${person.userRealName?.encodeAsHTML()}"/>
</td>
</tr>
<tr class="prop">
<td valign="top" class="name"><label for="passwd">Password:</label></td>
<td valign="top" class="value ${hasErrors(bean: person, field: 'passwd', 'errors')}">
<input type="password" id="passwd" name="passwd" value="${person.passwd?.encodeAsHTML()}"/>
</td>
</tr>
en cuenta que casi exactamente los mismos 5 líneas de código/HTML SGP se repite para cada formulario campo. Esto no me parece muy SECO, y me pregunto si otros han encontrado un mejor enfoque.
He encontrado 2 complementos que intentan solucionar este problema, form helper y bean-fields. Si alguien tiene experiencia en usar cualquiera de estos, estaría muy interesado en saber de ellos. Alternativamente, si hay otras soluciones/complementos, házmelo saber.
Gracias. Don
@ sudhir la respuesta es DRYer, ya que el plugin Grails Fields hará todo esto con una sola etiqueta – cdeszaq