Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >grails 3.3.8。如何解决类型不匹配的错误java.sql.Date属性

grails 3.3.8。如何解决类型不匹配的错误java.sql.Date属性
EN

Stack Overflow用户
提问于 2019-02-25 19:59:45
回答 1查看 108关注 0票数 0

grails中有一个严重的bug,这意味着任何使用scaffolding/field plugin/command对象进行数据绑定的表单都会失败。

请参阅:https://github.com/grails/grails-core/issues/11126

我的应用程序有许多带日期的域对象(没有时间或时区,如birthDate、issueDate、validUntilDate、memerableDate etc.etc)。

遗憾的是,这个问题在没有对grails 3.3.8进行任何修复的情况下就被关闭了。Grails 4在足够稳定到可以切换到它(至少6个月)方面还有很长的路要走。

我已经花了大约2个工作周(我的一大笔钱),试图找到某种变通方法。这个问题现在很关键。

目前,我已经可以使用java.time.LocalDate显示和创建域对象(我切换到这一点而不是java.sql.Date,因为不能使用字段插件覆盖java.sql.Date的行为,因为视图/_ fields /Date/_Widget.gsp等引用java.util.date)

但我不能编辑它们。

我用来创建它们的技巧是这样的:

User.groovy:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   class User {
       String name 
       java.time.LocalTime birthDate
       // etc
   }

UserController.groovy

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def save(User user) {
    user.clearErrors() // this fixed the spurious "property is type-mismatched"
   java.time.LocalDate birthDate = LocalDate.of(params.int('birthDate_year'), params.int("birthDate_month"), params.int("birthDate_day"))
   user.birthDate = birthDate
   userService.save(user)
   :
}

这是可行的。

问题是,当我想要编辑对象时,使用标准的脚手架/生成的gsp,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<g:form resource="${this.user}" method="PUT">
    <g:hiddenField name="version" value="${this.user?.version}" />
    <fieldset class="form">
        <f:all bean="user"/>
    </fieldset>
    <fieldset class="buttons">
        <input class="save" type="submit" value="${message(code: 'default.button.update.label', default: 'Update')}" />
    </fieldset>
</g:form>

它提供了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Cannot cast object '2119-01-02' with class 'java.time.LocalDate' to class 'java.util.Date'

我尝试使用从LocalDate到date的手动转换来覆盖视图/_field/LocalDate/_widget.gsp,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<g:datePicker name="${property}"  precision="day" value="${java.sql.Date.valueOf(value)}" default="none" noSelection="['':'']"/>

但这给了我们:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cannot resolve which method to invoke for [null] due to overlapping prototypes between: [class java.lang.String] [class java.time.LocalDate]

我找不到一种方法来工作(我已经尝试了上面的大约30个变体)

有没有人能想出任何方法来解决这个问题,这样我们就可以允许用户通过grails中的字段插件来编辑带有日期(没有时间和时区)的对象?

EN

回答 1

Stack Overflow用户

发布于 2019-08-22 00:22:48

我也有同样的bug,但使用的是Grails 2.5.5。当我在现有类中添加日期字段时,集成开发环境将添加导入: import java.sql.Date

在这种情况下,我有类型不匹配错误,但删除导入,一切正常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54873776

复制
相关文章
GCC、ARM-LINUX-GCC、ARM-ELF-GCC浅析
The GNU Compiler Collection,通常简称GCC,是一套由GNU开发的编译器集,为什么是编辑器集而不是编译器呢?那是因为它不仅支持C语言编译,还支持C++, Ada, Objective C等许多语言。另外GCC对硬件平台的支持,可以所无所不在,它不仅支持X86处理器架构, 还支持ARM, Motorola 68000, Motorola 8800, Atmel AVR, MIPS等处理器架构。
全栈程序员站长
2022/07/18
6.8K0
GCC 优化级别
1. gcc中指定优化级别的参数有:-O0、-O1、-O2、-O3、-Og、-Os、-Ofast。
KINGYT
2019/10/22
8.1K0
第009课 gcc和arm-linux-gcc和Makefile
hello.c(预处理)->hello.i(编译)->hello.s(汇编)->hello.o(链接)->hello
韦东山
2020/09/30
4.9K0
第009课 gcc和arm-linux-gcc和Makefile
【图片+代码】:GCC 链接过程中的【重定位】过程分析
最近因为项目上的需要,利用动态链接库来实现一个插件系统,顺便就复习了一下关于Linux中一些编译、链接相关的内容。
IOT物联网小镇
2022/04/06
8140
【图片+代码】:GCC 链接过程中的【重定位】过程分析
arm-gcc各版本区别
从本质来讲他们都是编译器,而gcc是linux系统下面用来将代码编译成一个可执行程序的手段。编译出来的是适用于linux系统的可执行二进制文件。可执行程序其实就是一堆的0101二进制机器码。这些机器码代表什么含义只有机器本身能理解。所以你用gcc编译出来的可执行程序只有在linux系统下面可以运行。
云深无际
2020/08/12
3.4K0
arm-gcc各版本区别
Ubuntu18.04安装arm-linux-gcc交叉编译工具(附arm-linux-gcc 5.4.0包)
下载(百度云)链接:https://pan.baidu.com/s/1AeqzkboWkJDJjU9HxtXhrA 提取码:uzup
全栈程序员站长
2022/06/28
4.3K0
Ubuntu18.04安装arm-linux-gcc交叉编译工具(附arm-linux-gcc 5.4.0包)
GCC编译优化选项
查看GCC各选项打开的优化项:gcc -Q --help=optimizers。分为如下:
叫你不戴帽子
2019/01/03
8K0
arm-linux-gcc 4.3.2编译uboot 1.1.6
在第三期项目的视频中,官方提供了一整套新的工具链,bootloader, 内核和文件系统(arm-linux-gcc_4.3.2, uboot-2012.04.01, linux-3.4.2)其中uboot-2012.04.01来源于毕业班,其下载烧写功能远不如uboot-1.1.6,因此我更偏向于使用老版的Uboot。但是第三期的工具链却无法直接编译uboot-1.1.6, 现在将解决这一问题。
韦东山
2022/09/08
2.8K0
qt交叉编译环境搭建_arm linux gcc
AArch64 是随 ARMv8 ISA 一起引入的 64 位架构,用于执行 A64 指令的计算机。而且在 AArch64 状态下执行的代码只能使用 A64 指令集。,而不能执行 A32 或 T32 指令。但是,与 AArch32 中不同,在64位状态下,指令可以访问 64 位和 32 位寄存器。
全栈程序员站长
2022/11/07
6.6K0
qt交叉编译环境搭建_arm linux gcc
Linux系统中使用GCC CPU参数优化代码编译
在编译程序时,借助参数传递的方法,使用与系统CPU相匹配的gcc参数,编译出的程序就是为系统CPU而进行特定优化过的,因而执行速度和效率都会是最好。
一见
2018/08/07
2.4K0
arm 开发板更新 gcc/gcc++ | Debain 更新 gcc,无需编译直接更新 gcc
网上的方法,大多是copy的,要下载gcc源码包,然后编译。我想说,你就算用 8G 内存的电脑,解压、配置、编译,没几个小时搞不来。
痴者工良
2021/04/26
7990
ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍[通俗易懂]
  在讲解各编译器之前,必须先了解一下以下这些文件。这些文件在编译器目录下或者编译生成目标平台的可执行程序时经常见到。此外,还需要注意区分 Windows 平台 和 Linux 平台的文件。
全栈程序员站长
2022/06/28
15.5K0
ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍[通俗易懂]
STM32高级开发——gcc-arm-none-eabi
素材来源:https://blog.csdn.net/zhengyangliu123/article/details/54783443
李肖遥
2022/12/22
1.4K0
STM32高级开发——gcc-arm-none-eabi
遍历ArrayList的过程中移除元素的方式
原因:在匹配到第一个要删除的元素并移除时,后面元素会往前移位,导致索引位置改变,从而漏掉后面一个元素。
全栈程序员站长
2022/09/15
6180
GCC生成的汇编代码
GCC产生的汇编代码有点难读,它包含一些我们不关心的信息。所有以 "." 开头的行都是指导汇编器和链接器的命令,称为“汇编器命令”。
Java架构师必看
2021/03/22
2.2K0
GCC生成的汇编代码
在arm上编译php
其实在arm上编译php和在x86没有太大区别,主要是很多依赖都需要重新编译,这里拿openssl和curl举例。
老高的技术博客
2022/12/29
1K0
在centos中更新gcc到6.4.0
本文由腾讯云+社区自动同步,原文地址 http://blogtest.stackoverflow.club/update-gcc-in-centos/
羽翰尘
2019/11/21
1.1K0
Ubuntu 14.04 LTS下使用arm-linux-gcc交叉编译OpenCV 2.4.9
本文介绍了如何将OpenCV库移植到ARM平台上,包括编译工具链、依赖库、配置方法以及运行时注意事项。
剑影啸清寒
2018/01/02
9.5K1
Ubuntu 14.04 LTS下使用arm-linux-gcc交叉编译OpenCV 2.4.9
点击加载更多

相似问题

GCC ARM乘法优化

223

GCC优化:使用ARM条件指令?

27

停止ARM GCC优化函数调用

217

gcc代码的ARM源代码

15

GCC优化移除功能序言与启示

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文