Grails 3.2 JSON 视图中的 Java 8 LocalDate

2024-01-03

当我尝试使用 a 来解析包含 Java 8 LocalDateTime 的简单域模型对象时json视图 http://docs.grails.org/latest/guide/single.html#whatsNewJSONViews,我收到一个堆栈溢出异常,这似乎与 GSON 实现不了解 Java 8 LocalDateTime 这一事实有关。

这是一个例子(grails 视图和 JSON 的文档 http://views.grails.org/latest/#_introduction):

域类“Person”

import java.time.LocalDate
class Person
{
    Sting name
    LocalDate birthDate
}

人员控制器

class PersonController
{
    def index() {
        respond Person.findAll() as List<Person>
    }
}

索引.gson视图

@Field List<Person> personList

json tmpl.person(personList)

_person.gson 模板文件

model 
{
   Person person
}

json g.parse(person)

当我尝试打开此视图时,抛出堆栈溢出异常:

导致:grails.views.ViewRenderException:渲染视图时出错: 无效的 在 grails.views.AbstractWritableScript.writeTo(AbstractWritableScript.groovy:43) 在 grails.plugin.json.view.api.internal.DefaultGrailsJsonViewHelper$6.writeTo(DefaultGrailsJsonViewHelper.groovy:677)

当我将 _person.gson 简化为:

...
json 
{
   name person.name
}

该视图按预期工作。

我的问题是

是否有默认方法来处理 Grails JSON 视图中的 Java 8 LocalDate/Time 属性? 如果没有,我怎样才能永久注册一个新的 GSON 构建器 https://stackoverflow.com/a/36136066/3244925


  • 这个问题是相关的:如何使用 Gson 序列化和反序列化 Java 8 的 java.time 类型? https://stackoverflow.com/questions/23072733/how-to-serialize-and-deserialize-java-8s-java-time-types-with-gson
  • 我尝试实现这个:https://github.com/gkopff/gson-javatime-serialisers https://github.com/gkopff/gson-javatime-serialisers但这不会将自身注入为新的默认反/序列化器,并且需要手动使用

这些 java 8 日期支持尚未在 json 视图中实现。这将在视图 1.2.0(发布时)和当时最新版本的 grails-java8 插件中开箱即用。

编辑:澄清一下,只有在使用内置渲染策略(g.render、hal.render、jsonapi.render 等)时才不受支持。您仍然可以按照自己想要的任何方式自行构建视图:

json {
    someLocalDate LocalDate.now.format(...)
}

Edit2:Json 视图 1.2 已与 grails-java8 插件(也是版本 1.2)一起发布。现在,这两个插件一起支持开箱即用的 Java 8 日期类型渲染。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Grails 3.2 JSON 视图中的 Java 8 LocalDate 的相关文章

  • 当路径的点超出视野时,Android Canvas 不会绘制路径

    我在绘制路径时遇到了 Android Canvas 的一些问题 我的情况是 我有一个相对布局工作 如地图视图 不使用 google api 或类似的东西 我必须在该视图上绘制一条路径 canvas drawPath polyPath bor
  • 如何使用 JAVA 代码以编程方式捕获线程转储?

    我想通过 java 代码生成线程转储 我尝试使用 ThreadMXBean 为此 但我没有以正确的格式获得线程转储 因为我们正在使用jstack命令 请任何人提供一些帮助 他们是否有其他方式获取线程转储 使用任何其他 API 我想要的线程转
  • (Java) App Engine 中的静态文件无法访问

    The 示例文档 http code google com appengine docs java gettingstarted staticfiles html表示您只需将文件放在 war 或子目录 中 并且应该可以从主机访问它们 只要它
  • 如何将jscrollpane添加到jframe?

    我有以下源代码 有人可以给我建议如何将 jscrollpane 添加到 jframe 上吗 我尝试了几次将其添加到 jframe 但没有任何进展 它甚至没有显示 public class Form3 JFrame jframe new JF
  • 如何使用正则表达式验证 1-99 范围?

    我需要验证一些用户输入 以确保输入的数字在 1 99 范围内 含 这些必须是整数 Integer 值 允许前面加 0 但可选 有效值 1 01 10 99 09 无效值 0 007 100 10 5 010 到目前为止 我已经制定了以下正则
  • 从休眠乐观锁定异常中恢复

    我有一个这样的方法 Transactional propagation Propagation REQUIRES NEW public void doSomeWork Entity entity dao loadEntity do some
  • 添加到列表时有没有办法避免循环?

    我想知道这样的代码 List
  • 使用 JSON 的 Pentaho HTTP Post

    我是 Pentaho 的新手 我正在尝试执行以下工作流程 从数据库中读取一堆行 做一些转换 将它们以 JSON 格式发布到 REST Web 服务 我已经使用输入步骤和 Json 输出步骤解决了前两个问题 但是 我在执行最后一步时遇到两个问
  • 用于缓存的 Servlet 过滤器

    我正在创建一个用于缓存的 servlet 过滤器 这个想法是将响应主体缓存到memcached 响应正文由以下方式生成 结果是一个字符串 response getWriter print result 我的问题是 由于响应正文将不加修改地放
  • 我们如何测试包私有类?

    我正在看书Effective Java in Item 13 Minimize the accessibility of classes and members 它提到 为了方便测试 您可能想让类 接口或成员更易于访问 这在某种程度上是好的
  • 如何通过 Android 按钮单击运行单独的应用程序

    我尝试在 Android 应用程序中添加两个按钮 以从单独的两个应用程序订单系统和库存系统中选择一个应用程序 如图所示 我已将这两个应用程序实现为两个单独的 Android 项目 当我尝试运行此应用程序时 它会出现直到正确选择窗口 但是当按
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • Karaf / Maven - 无法解决:缺少需求 osgi.wiring.package

    我无法在 Karaf 版本 3 0 1 中启动捆绑包 该包是使用 Maven 构建的并导入gson http mvnrepository com artifact com google code gson gson 2 3 1 我按照要求将
  • 无需登录即可直接从 Alfresco 访问文件/内容

    我的场景是这样的 我有一个使用 ALFRESCO CMS 来显示文件或图像的 Web 应用程序 我正在做的是在 Java servlet 中使用用户名和密码登录 alfresco 并且我可以获得该登录的票证 但我无法使用该票证直接从浏览器访
  • 如何让 Emma 或 Cobertura 与 Maven 一起报告其他模块中源代码的覆盖率?

    我有一个带有 Java 代码的多模块 Maven 设置 我的单元测试在其中一个模块中测试多个模块中的代码 当然 这些模块具有相互依赖性 并且在测试执行之前根据需要编译所有相关模块中的代码 那么 如何获得整个代码库覆盖率的报告 注意 我不是问
  • 如何为 json 请求对象指定可选元素

    在 API 蓝图中 我希望为 POST 消息指定一个可选的 json 元素 示例 Add a new User POST To add a User send a JSON Request application json name A n
  • JMS 中的 MessageListener 和 Consumer 有什么区别?

    我是新来的JMS 据我了解Consumers能够从队列 主题中挑选消息 那么为什么你需要一个MessageListener因为Consumers会知道他们什么时候收到消息吗 这样的实际用途是什么MessageListener 编辑 来自Me
  • 何时在 hibernate 中使用 DiscriminatorValue 注解

    在 hibernate 中使用 DiscriminatorValue 注释的最佳场景是什么以及何时 这两个链接最能帮助我理解继承概念 http docs oracle com javaee 6 tutorial doc bnbqn html
  • Java 的 PriorityQueue 与最小堆有何不同?

    他们为什么命名PriorityQueue如果你不能插入优先级 它看起来与堆非常相似 有什么区别吗 如果没有区别那为什么叫它PriorityQueue而不是堆 默认的PriorityQueue是用Min Heap实现的 即栈顶元素是堆中最小的
  • 如何使用通配符模拟泛型方法的行为

    我正在使用 EasyMock 3 2 我想基于 Spring Security 为我的部分安全系统编写一个测试 我想嘲笑Authentication http docs spring io autorepo docs spring secu

随机推荐

  • Java - 调用屏幕键盘

    我正在开发的应用程序将在Windows 7上运行 它将用于通过触摸屏输入一些信息 每当提示用户输入信息时 我需要弹出一个屏幕键盘 我的问题是 我应该从头开始创建一个键盘类还是应该使用 Windows 7 内置屏幕键盘以及如何在 Java 应
  • 具有非标量输出的 Numpy 矢量化函数

    我正在尝试对输出列表的函数进行矢量化 我希望将 numpy 列表中的所有值提供给它 并让它返回一个矩阵 这样每一行都是输入向量中元素的输出 import numpy as np def func x n o for i in range n
  • uiautomator - 当我验证每个列表项中的文本时,无法让 ListView 滚动。当我点击屏幕上的最后一个项目时,它就失败了

    我正在尝试验证 ListView 中每个列表项中的文本 并逐一向下滚动 以便我可以验证每个列表项 但由于某种原因 我无法让它继续滚动列表来验证每个元素 有没有人有幸自动化这种操作 这是我能做到的最接近的 如果这还不够 请告诉我 UiScro
  • Docker 中使用 capybara 和 headless selenium 浏览器进行 Rails 系统测试

    TL DR 关于如何正确配置 capybara 以便能够使用默认的 Rails minitest 系统测试在 docker 容器中驱动远程 selenium 浏览器 您有什么想法吗 我在 dockerized 环境中运行 Rails 现在我
  • 如何通过浏览弹出窗口设置路径?

    我有下面的脚本 其中有两个路径 一个是目标路径 只有一个 另一个是源路径 变量 关于下面的脚本函数 我将每月运行一次 它将转到源路径 10 路径 并复制最新文件 然后复制并重命名到目标路径 所有文件通用 注意 从响应源复制的文件应按照脚本重
  • 从 javascript 客户端连接到 asp.net core signalR 服务器

    我有 asp net core web api 服务器正在传输信号器 它适用于 asp net 客户端 我试图与下面显示的代码建立连接 但它只连接到非核心服务器 它不适用于核心服务器 the hub class in the server
  • isset() 和 PHP 全局变量

    关于全局变量初始化 function hello testing global conditional random if isset conditional random echo foo is inside 全局变量 condition
  • 根据数据框中的信息在 Pandas 数据框中创建变量

    我有一个按以下方式组织的数据框 var1 var2 var3 var4 0 A 23 B 7 1 B 13 C 4 2 C 12 A 11 3 A 5 C 15 我现在想要创建一个新变量 列 var5 如果 var1 A 它采用 var2
  • 如何在react js中删除Web应用程序cookie

    我是 ReactJs 的新手 我想删除 cookie 并在注销按钮上登录会话以断开用户的会话 但我无法访问代码中的cookie 请帮忙 如果您在 JWT 的 Express 后端的登录路由中的响应上设置 cookie 并使用 httpOnl
  • 多表还是单表?

    我已经看到一些论坛有这个问题 但他们没有回答我想知道的一件事 我先解释一下我的主题 我有一个系统 其中多个用户的每个日志都输入到数据库中 例如 用户1登录 用户2登录 用户1进入用户管理 用户2更改密码等 因此 我预计每个用户每天有 100
  • 如何在 Seaborn 箱线图中加宽框?

    我正在尝试使用 Seaborn 制作分组箱线图 参考 http stanford edu mwaskom software seaborn examples grouped boxplot html 而且这些盒子都非常窄 太窄了 看不清分组
  • 如何让JProgressBar匹配Windows LaF?

    我已经工作了一段时间了JProgressBar using WindowsLookAndFeel 但我发现与原生进度条有一些主要区别 这是正常状态下的原生栏 虽然这是 Java 的 敏锐的眼睛可能会发现爪哇顶部的白色更亮 绿色也更亮一些 此
  • Blazor 输入复选框

    所以总体目标是我希望在表格上有复选框 所有不同的图案和不同类型的剪裁 男装 女装 通用 并且我希望能够检查图案 x y 和 z 然后剪裁类型男士和女士 然后将我检查过的值传递或访问到一个方法 然后该方法执行所有独特的配置 然后调用我的数据访
  • 如何在业务逻辑层实现事务

    我在我的 asp net 应用程序中使用企业库数据访问块 我想从业务逻辑层跨多个存储过程实现事务 Entlib 打开一个新连接以进行数据库访问 按以下方式使用 Transaction Scope 是否会导致分布式事务 using Trans
  • 我们可以重载Java中的main方法吗?

    我们可以超载吗main Java 中的方法 You can超载main 方法 但仅public static void main String args 当你的类被 JVM 启动时将会被使用 例如 public class Test pub
  • LINQ ToDictionary 和 ToLookup 之间有什么区别

    LINQ ToDictionary 和 ToLookup 之间有什么区别 他们似乎做同样的事情 字典是 1 1 映射 每个键映射到单个值 并且字典在事后是可变的 可编辑的 查找是一个 1 many 映射 多映射 每个键都映射到一个IEnum
  • Spotify 的自定义网络播放器

    据我所知 不可能开发一个Web应用程序 在spotify com之外 提供播放Spotify歌曲的自定义Web播放器 对吗 唯一的选择似乎仍然是 Spotify 播放按钮 但功能非常有限 然而我刚刚看到这个例子 1 http static
  • 如何应对 R 中的“非数字矩阵范围”错误?

    我正在尝试使用标准随机方程从学生的 t 分布生成模拟值的数据框 我使用的函数如下 matgen lt function means chi covariancematrix cols lt ncol means normals lt mvr
  • 如何使用 Python 在 Spark 中添加两个稀疏向量

    我到处搜索 但找不到如何使用 Python 添加两个稀疏向量 我想添加两个稀疏向量 如下所示 1048576 110522 0 6931 521365 1 0986 697409 1 0986 725041 0 6931 749730 0
  • Grails 3.2 JSON 视图中的 Java 8 LocalDate

    当我尝试使用 a 来解析包含 Java 8 LocalDateTime 的简单域模型对象时json视图 http docs grails org latest guide single html whatsNewJSONViews 我收到一