Grails脚手架,仍然无法在编辑表单中处理java8 localdateTime,也无法做Map属性

问题描述 投票:-1回答:1

我正在使用Grails v3.3.9,build.gradle中的最新grails hibernate 8和grails插件,以及java8插件,字段插件(没有任何区别)和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'

我在我的Domain模型上尝试了这个,它使用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
    }
}

如果我在带有空列的bootstrap中有Db记录 - grails就不知道任何字段持有者如何进入null。返回bootstrap并手动创建一个值,重启。

至少这个时间列表和显示渲染在表单上放置了实际内容

enter image description here

但是,当您创建新表单(或编辑操作)时,您会得到这个。 contractSigned(localDateTime)没有编辑器,最后域模型有一个属性类别作为Map,而Map列没有编辑器。

enter image description here

这是一个真正的问题。我可以回复尝试使用Date,但这确实是一个逆行步骤,平台建议支持新的数据时间格式。 Map列可以考虑我的后备内容。

我错过了一些让这项工作成功的东西吗?或者我是否会因缺陷而加薪?

我在之前的3.3.8版本中遇到了这个问题,但没有解决数据时间问题

previous record

另见先前在这里询问功能

make java new dates first class citizen in grails

grails scaffolding localdate
1个回答
0
投票

不要在类中使用LocalDateTime作为数据类型。您可能无法编辑它。请改用Date类型。然后grails本身将为您提供日期选择器以添加和编辑。如果您需要在GSP中提取当前日期时间,可以使用${new Date()作为该字段的值。

© www.soinside.com 2019 - 2024. All rights reserved.