2010-01-25 12 views
5

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

Respuesta

5

Usando el bean-field plugin. el código será:

<bean:withBean beanName="person"> 
    <bean:field property="username" label="Login Name:"/> 
    <bean:field property="userRealName" label="Full Name:"/> 
    <bean:field property="passwd" label="Password:"/> 
</bean:withBean> 

Se puede encontrar una solución secadora?

+1

@ sudhir la respuesta es DRYer, ya que el plugin Grails Fields hará todo esto con una sola etiqueta – cdeszaq

5

Sí, frijol campos plugin es muy seco ... sus 20 líneas pueden ser reemplazados por una línea:

<bean:form beanName="person" properties="username, userRealName, passwd”/> 

(Asumiendo que tiene propiedades i18n set)

8

Para aquellos que lean este hilo futuro: para grails 2.x branch Grails fields plugin se recomienda sobre campos bean, su sucesor de bean-fields y proporciona flexibilidad para reemplazar plantillas predeterminadas

+1

Nunca me di cuenta de que vivía en el futuro hasta ahora :) – David

Cuestiones relacionadas