Проверка формы Grails на клиенте - PullRequest
0 голосов
/ 10 июня 2018

У меня есть следующий класс домена и gsp, и я не могу работать для проверки на стороне клиента gsp.

Класс домена:

class User {
   String username
   String password
   String emailAddress
   static hasMany = [memberships: Membership]
}

Форма gsp:

<div class="error-details">
   <g:hasErrors bean="${user}">
       <ul>
           <g:eachError var="err" bean="${user}">
              <li>${err}</li>
           </g:eachError>
       </ul>
   </g:hasErrors>
</div>
<form action="${raw(createLink(controller:'purchase', action: 
'createSubscription'))}" method="POST">
   <input type="text" name="username">
   <input type="text" name="password">
   <input type="text" name="emailAddress">
</form>

Есть что-то, что я пропустил?

1 Ответ

0 голосов
/ 23 июня 2018

Вы должны использовать встроенные Taglibs для рендеринга полей.Не используйте стандартный HTML.Таким образом, вы позволяете Grails определять ограничения на основе класса вашего домена.

Вы не указали версию используемых вами grails:

В последней версии 3.3.x используется плагин fields, см. https://grails -fields-plugin.github.io/grails-fields/latest/ref/Tags/field.html

<f:field bean="user" property="username"/>
<f:field bean="user" property="password" />
<f:field bean="user" property="emailAddress"/>

или просто используйте этот

<f:all bean="user"/>

, который будет отображать все атрибуты пользователя,

Убедитесь, что вы обновили свой домен и включили следующее ограничение

static constraints = {
     password password: true
}

Возможны дополнительные ограничения.Пожалуйста, смотрите https://docs.grails.org/latest/ref/Constraints/Usage.html

В более старой версии Grails, пожалуйста, смотрите https://grails.github.io/grails2-doc/2.4.3/ref/Tags/field.html

<g:field type="text" name="username" value="${userInstance?.username}"/>
<g:field type="password" name="password" value="${userInstance?.password}"/>
<g:field type="text" name="username" value="${userInstance?.username}"/>
...