В grails 2 мы могли ссылаться на ограничения объекта домена в gsp, чтобы сохранить конфигурацию html 5 «сухой». В grails 3 (пробовал как 3.1.10, так и 3.2.0.RC1) я получаю сообщение об ошибке для кода, который я успешно тестировал в grails 2. Я пытаюсь сослаться на совпадения ограничений в атрибуте phone и использовать это для шаблона HTML 5. Для генерации этого кода используются скаффолдинг, но для Grails 3, генерируемый скаффолдингом, используется плагин полей, поэтому я не вижу этот код. Любые идеи?
Вот код объекта домена:
class Disruption {
static constraints = {
phone(matches:/^[0-9]{10}$/, nullable:true)
email(email:true, nullable:false)
}
String name
String phone
String email
Вот код gsp:
<div class="form-group ${hasErrors(bean: disruption, field: 'phone', 'error')}">
<label for="phone" class="control-label col-sm-3">
Phone
</label>
<div class="col-sm-2">
<g:textField name="phone" style="width: 7em" class="form-control" title="Phone 10 digits" pattern="${disruption.constraints.phone.matches}" maxlength="10" placeholder="##########" value="${disruption.phone}"/>
</div>
</div>
Вот исключение:
URI / нарушение / создание Класс java.lang.NullPointerException Сообщение Не удалось обработать запрос; вложенное исключение - org.grails.gsp.GroovyPagesException: ошибка обработки GroovyPageView: [views / disruption / create.gsp: 92] Ошибка выполнения тега: ошибка оценки выражения [disruption.constraints.phone.matches] в строке [58]: невозможно получить свойство phone в нулевом объекте Причина в невозможности получить свойство phone у нулевого объекта