Леса Grails, по-прежнему не могут обрабатывать java8 localdateTime в формах редактирования и не могут использовать свойство Map - PullRequest
0 голосов
/ 01 февраля 2019

Я использую Grails v3.3.9, последние Grails Hibernate 8 и плагины Grails в build.gradle, вместе с плагином java8, плагином fields (ничего не изменилось) и Hibernate 8.

compile "org.hibernate:hibernate-core:5.1.5.Final"
compile group: 'org.hibernate', name: 'hibernate-java8', version: '5.1.5.Final'
compile "org.grails.plugins:gsp"
compile 'org.grails.plugins:grails-java8:1.2.3'  //java 8 features including datetime in GSP
compile 'org.grails.plugins:fields:2.2.10'

Я попробовал это на моей модели Домена, которая расширяет абстрактный класс с LocalDateTime

abstract class Agreement {

    String contractReference
    String status
    LocalDateTime contractSignedDate
    LocalDateTime lastUpdated   //updated by framework
    LocalDateTime dateCreated   //updated by framework

    static constraints = {
        contractReference nullable:false
        status nullable:false
        contractSignedDate nullable:true
    }
}

и конкретным классом здесь

class MaintenanceAgreement extends Agreement {

    String level
    Map category = [:]  //p1 to p5 and sla details 

    //static belongsTo = [serviceProvider : OrgRoleInstance, maintainer: OrgRoleInstance]

    // implemented as unidirectional many to one !  mag point to org
    static belongsTo = [maintainer: OrgRoleInstance]

    static constraints = {
        level nullable:false
        //serviceProvider nullable:true
        maintainer nullable:false   //ref to maintainer party

        category nullable:false
    }
}

Если у меня есть запись в Db из начальной загрузки с нулемcolumn - grails просто не как любой держатель поля для нулевого ввода.Вернитесь к начальной загрузке и вручную создайте значение, перезапустите.

По крайней мере, этот список времени и рендеринг показывают фактическое значение в форме

enter image description here

Однако, когда вы идете, чтобы создать новую форму (или действие редактирования), вы получаете это.ContractSigned (localDateTime) не имеет редактора , и, наконец, модель домена имеет категорию свойств в виде карты, и нет редактора для столбца карты.

enter image description here

Это реальная проблема.Я могу вернуться к попытке использовать Date, но это действительно ретроградный шаг, и платформа предлагает новые форматы времени данных.Столбец «Карта», чтобы подумать, на что может быть мой запасной вариант.

Я что-то упускаю здесь, что делает эту работу?или я повторно поднял как дефект?

Я столкнулся с этим в предыдущей сборке 3.3.8, здесь также без разрешения времени выпуска данных

предыдущая запись

см. Также предыдущий запрос о функции здесь

сделать java новыми датами гражданин первого класса в граалях

1 Ответ

0 голосов
/ 02 февраля 2019

Не используйте LocalDateTime в вашем классе для типа данных.Вы не можете редактировать это.Вместо этого используйте тип Date.Затем Grails сам предоставит вам возможность выбора даты для добавления и редактирования.Если вам нужно извлечь текущую дату и время в GSP, вы можете использовать ${new Date() в качестве значения этого поля.

...