0

У меня есть приложение с доменом , который простирается от SecUser (класс пользователя безопасности в Spring Secrity Core). В этом домене (Пользователь) у меня есть серверные поля, и один из них: Дата рождения Дата. Леса создают знак g: datePicker, но мне не нравится стиль.Поле даты в домене и g: textField тег не работает в Grails

Я хотел бы реализовать, например: Datepicker для Boostrap (http://www.eyecon.ro/bootstrap-datepicker/), но эта библиотека использует тип ввода = «текст» поле.

На мой взгляд (.gsp), если я помещал ввод текста, сохранений и обновляют действия не работают, потому что в моем контроллере, когда я получаю userInstance.birthDate значение равно нулю.

Если я установил тег g: datePicker, мой контроллер правильно получит значение.

Как я могу решить эту проблему? Спасибо.

EDITED:

Кодекс Datepicker Bootstrap на мой взгляд:

<div class="input-group date date-picker" data-date-format="dd-MM-yyyy" data-date-end-date="+0d"> 
     <input type="text" id="birthDate" name="birthDate" value="${formatDate(format:'dd-MM-yyyy',date: userInstance?.birthDate)}" class="form-control form-shadow"/> 
     <span class="input-group-btn"> 
      <button class="btn default" type="button"> 
        <i class="fa fa-calendar"></i> 
      </button> 
     </span> 
</div> 
<span class="help-block"> 
    <h5> 
     <g:message code="custom.date.picker.description" default="Select a date"/> 
    </h5> 
</span> 

Теперь я могу получить значение в мой контроллер с params.birthDate но следующей ошибки появляется:

Class java.text.ParseException 
Message Unparseable date: "01-04-2016" 

ПОСТАНОВИЛ:

Решение должно правильно анализировать в Datepicker для библиотеки Bootstrap. Эта библиотека использует другой парсер. Например, '01-04-2016' в Grails is 'dd-MM-yyyy' но в этой библиотеке есть: 'dd-mm-yyyy'.

В этой связи форматы появляются: https://bootstrap-datepicker.readthedocs.org/en/latest/options.html#format

Кроме того, необходимо добавить следующие строки в Config.groovy:

grails.databinding.dateFormats = [ 'dd-MM-yyyy', 'yyyy-MM-dd', 'yyyy-MM-dd HH:mm:ss.S' ]

ответ

1

Решение прямолинейно является укажите поле даты в действии вашего контроллера:

def save(User user) { 
    .... 
    user.birthDate = new SimpleDateFormat('dd-MM-yyyy').parse params.birthDate 
    ... 
} 
+0

Это решение не работает, потому что я получаю то же значение в моем контроллере: null. Я вижу: log.error (userInstance.birthDate). Я редактировал свой вопрос, чтобы добавить код ввода. –

+0

@ JesúsIglesias в вашем поле ввода отсутствует атрибут 'name'. следовательно, «null» в контроллере. это должно быть '' – injecteer

+0

Теперь. Я могу получить значение в моем контроллере, но я получаю следующую ошибку: Класс java.text.ParseException Сообщение Непревзойденная дата: «01-04-2016» –

 Смежные вопросы

  • Нет связанных вопросов^_^