5

Grails を使用する場合、各フォーム フィールドをレンダリングする GSP コードは次のようになります。

<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>

各フォーム フィールドに対して、ほぼ同じ 5 行の GSP/HTML コードが繰り返されていることに注意してください。これは私にはあまり DRY とは思えません。他の人がより良いアプローチを見つけたのではないかと思っています。

この問題に対処しようとする 2 つのプラグイン、form helperbean-fieldsを見つけました。誰かがこれらのいずれかを使用した経験がある場合、私は彼らから話を聞くことに非常に興味があります. または、他のソリューション/プラグインがある場合は、お知らせください。

ありがとう。ドン

4

3 に答える 3

8

将来このスレッドを読む人のために-grails2.xブランチの場合Grailsフィールドプラグインは、実際にはbeanフィールドの後継であるBeanフィールドよりも推奨され、デフォルトのテンプレートをオーバーライドする柔軟性を提供します

于 2012-04-19T06:49:28.030 に答える
5

はい、bean-fields プラグインは非常に DRY です... 20 行を 1 行に置き換えることができます。

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

(i18n プロパティが設定されていると仮定します)

于 2010-01-25T19:25:45.857 に答える
5

bean-field プラグインの使用。コードは次のようになります。

<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>

DRYer ソリューションを見つけることができますか?

于 2010-01-25T19:01:16.383 に答える