
Grails
微风好飞行
这个作者很懒,什么都没留下…
展开
-
调试 Spring + GORM + BeanDefinitionRegistryPostProcessor 遇到的问题
追踪代码,分析 No Session Bound 问题。原创 2020-11-29 21:11:54 · 435 阅读 · 0 评论 -
Grails 中如何显示网络请求和响应的内容?
Grails 中如何显示网络请求和响应的内容?原创 2020-11-05 10:31:26 · 248 阅读 · 0 评论 -
如何获取 Groovy 中 trait 的属性信息?
如何获取 Groovy 中 trait 的属性信息?如何给Trait 添加 Transformer?原创 2020-08-03 16:58:12 · 439 阅读 · 0 评论 -
提升 Grails HibernateSpec 单元测试的一个技巧
提升Grails HibernateSpec 单元测试的一个技巧原创 2020-07-30 18:04:08 · 182 阅读 · 0 评论 -
关于 HibernateOptimisticLockingFailureException: Row was updated or deleted by another transaction 的问题
介绍了乐观锁失败异常 HibernateOptimisticLockingFailureException 的原因,以及一些处理方法原创 2020-07-30 17:30:43 · 2217 阅读 · 2 评论 -
如何发布一个 Grails 插件?
如何发布一个 Grails 插件?原创 2020-07-28 15:47:49 · 187 阅读 · 0 评论 -
如何在 Grails 中使用 Swagger 来编写 API 文档
答:需要自己开发一个 OAS v3 插件,已经开发了一个初步版本,有需要的请看blog。原创 2020-07-24 15:47:39 · 957 阅读 · 0 评论 -
如何获取Java/Groovy中 method 参数的名称?
起因最近在开发一个 Grails 的 Swagger(OpenAPI v3)插件,需要自动从action方法中生成文档,这就需要读取方法的参数名。但是在 Java 中如果编译时没有指定选项则无法获取到方法名,得到的是 argsN 这样的名字。但是 Grails 中的 data-binding 功能却能根据 action 的名称将请求参数对应到同名的参数变量上,这就说明是有办法做到的,至少在 Groovy 中是可以做到的,因此我们可以从阅读、研究 Grails 的 databinding 代码来寻找方法。当原创 2020-07-21 14:44:24 · 1121 阅读 · 0 评论 -
Grails 的插件能提供“静态资源”和 assets 给应用项目吗?
Grails 插件是可以对外提供静态资源文件,让主应用通过 URL、Taglib 访问该文件的。原创 2020-07-20 14:22:39 · 262 阅读 · 0 评论 -
Grails 中如何使用 native sql 进行查询?
Grails 中如何使用 native sql 进行查询?原创 2020-07-14 18:05:29 · 202 阅读 · 0 评论 -
因为添加了 @EqualsAndHashCode 注解而导致 User 对象保存时报错的问题
因为添加了 @EqualsAndHashCode 注解而导致 User 对象保存时报错的问题原创 2020-07-13 11:12:36 · 615 阅读 · 0 评论 -
Grails 源代码剖析
梳理 Grails 的代码仓库位置;解析 Grails 代码是如何工作的原创 2020-06-21 12:47:47 · 260 阅读 · 4 评论 -
如何 drop 有 foreign key 的 mysql table?
父子表定义一张 “订单表 Orders” 中有一个字段 “customer_id” 顾客id,指向顾客表 (Customers) 的主键(id字段),那么 顾客表就叫做“父表”或“被引用表”,而顾客表被称为“子表”或“引用表”。当 drop 父表时,必须先删除掉“子表”,否则 mysql 会报告:ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails如果两张表互相之间相互引用,原创 2020-06-20 19:45:04 · 1027 阅读 · 0 评论 -
Service Unit Test 报告 “not a domain class” 的问题
Service Unit Test 不能调用 GORM save() 等方法的问题原因。原创 2020-06-13 18:37:13 · 469 阅读 · 0 评论 -
用 MappingBuilder 解决 mapping DSL 在 IDEA 中报错的问题
用 MappingBuilder 来解决IDEA不识别 mapping DSL 的问题。原创 2020-06-11 13:32:48 · 289 阅读 · 0 评论 -
如何让 Grails 的 REST 接口返回图片?
介绍了如何正确地让 REST api 接口返回图片文件原创 2020-06-01 17:34:01 · 218 阅读 · 0 评论 -
Grails 的定时任务功能
在 grails 中使用定时任务的方法原创 2020-06-01 15:18:35 · 587 阅读 · 1 评论 -
GORM 开发实例
记录 GORM 开发实例原创 2020-05-21 00:10:06 · 566 阅读 · 0 评论 -
Grails 中如何解析 request body 中的 json 内容?
介绍了如何在 Grails 中读取请求体中的 json 数据。原创 2020-05-16 11:09:33 · 618 阅读 · 0 评论 -
如何排查 Grails UrlMappings 问题?
排查Grails中UrlMappings的错误,记录常见问题。原创 2020-05-16 10:53:59 · 245 阅读 · 0 评论 -
如何用 Ajax 上传文件?
描述了用 Ajax 如何上传文件,底层所使用的技术规范,以及示例代码。原创 2020-05-14 10:52:28 · 242 阅读 · 0 评论 -
Grails 命令行无法启动项目的问题
启动项目报告下列异常Command [run-app] error: Profile [org.grails.profiles:base:4.0.0] declares an invalid dependency on parent profile [org.grails.profiles:base:4.0.0] (NOTE: Stack trace has been filtered. Use...原创 2020-05-05 17:16:12 · 615 阅读 · 0 评论 -
GORM distinct() + count() 的问题
当我们想要查询 “不同记录的条数” 时,我们可能会这样写:int totalCampaignUser = CampaignParticipation.where { eq "campaign.id", campaignToJoin.id}.distinct("user").count()?.intValue() ?: 0但这样会生成一个错误的 SQLselect distinct...原创 2020-05-01 10:38:40 · 8335 阅读 · 0 评论 -
让 service 、domain 单元测试能自动注入 spring bean
当我们在写 Grails 的 service unit test 时,有时需要依赖其他的服务,如何注册这些 service 对象并自动注入到测试类呢?可以用 doWithSpring() 方法注册我们依赖的其他服务,用工具类 AutowiredTest trait 来完成自动注入到测试类的工作。示例代码import grails.testing.spring.AutowiredTestimp...原创 2020-05-01 09:45:35 · 667 阅读 · 0 评论 -
如何指定 Grails 运行时的 file.encoding=UTF-8 ?
为什么要指定 file.encoding = UTF-8 ?如果不指定字符集编码,那么在 Java程序中,从字节换为字符时会使用系统属性 file.encoding,这个属性会从操作系统中继承,例如中文windows一般会设置为 GBK 字符编码。这样会有什么问题呢?因为 Grails 的 JSON View 需要将 .gson 文件编译为 class。在编译时如何对待文件的编码呢?Grail...原创 2020-05-01 09:40:05 · 714 阅读 · 0 评论 -
gradle 总是占用 plugn 生成的 jar 文件,导致后面无法执行 clean 命令
在用 Gradle 编译 Grails 项目时,gradle 总是占用 plugn 生成的 jar 文件,导致后面无法执行 clean 命令。错误提示> Task :chess_plugin:clean FAILEDFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ...原创 2020-05-01 09:18:45 · 633 阅读 · 0 评论 -
一个 GORM 定义错误,关于集合属性的排序设置
当一个 Domain Class 有一个集合属性时,我们可以指定集合的排序方法。但如果设置了错误的属性,将导致程序在做集成测试时启动失败。原创 2020-04-24 15:02:45 · 906 阅读 · 0 评论 -
Grails GORM 自动建表失败,且无错误提示信息
今天遇到一个情况,GORM 根据 class 自动建表失败,且没有任何提示信息。造成建表失败的原因是 varchar 类型字段的 maxSize*3 超过了 mysql varchar 字段最大字节数。为什么要乘以3呢?因为 mysql 类型长度是按字节算,而varchar长度是按字符算的,所以 varchar(1) 实际占用的字节长度是3(如果数据库编码是 utf-8 的话)。因为 mys...原创 2020-04-21 16:59:24 · 1152 阅读 · 0 评论 -
如何打印 Grails GORM 的SQL语句执行情况,以及SQL语句参数值?
当我们需要查看 GORM 的 DDL 或者 查询SQL 语句是否被 GORM 正确执行时,我们可以这样做。一、打开 logback 中相关的 logger设置 BasicBinder logger 的级别为 TRACE 会打印 hibernate 的SQL参数值;设置 SQL logger 会打印SQL语句,但这个做法和 application.yml 中的配置重复了,因此可以注释掉。//...原创 2020-04-21 16:26:11 · 2395 阅读 · 0 评论 -
Grails 开发日志-View查找规则、Data-Binding
View 文件查找规则类:grails.views.ResolvableGroovyTemplateEngine#resolveTemplate(java.lang.String, java.util.Locale, java.lang.String…)grails.views.ResolvableGroovyTemplateEngine#templateByPathgrails.vie...原创 2020-04-17 18:42:38 · 185 阅读 · 0 评论 -
如何在 controller action 方法参数中使用枚举?
尝试controller 代码如下:def list(GuessType type, int max) {}报错Could not find matching constructor for: chess_lottery.enumeration.GuessType()groovy.lang.GroovyRuntimeException: Could not find matching...原创 2020-04-16 17:43:35 · 1312 阅读 · 0 评论 -
用 Grails 的 spring-security-core 插件实现用户登录、访问控制功能
本文介绍了如何用 grails 的 spring-security-core 插件实现用户登录、访问控制功能原创 2020-04-15 11:41:30 · 1017 阅读 · 0 评论 -
用 Grails 的 Spring Security REST 插件实现REST API 的用户登录、权限控制功能
介绍了如何用grails的spring-security-rest插件实现用户登录、访问控制功能。原创 2020-04-15 11:36:47 · 917 阅读 · 0 评论 -
Grails 中如何对 service 进行单元测试?
要用集成 HibernateSpec 类,要在 web profile 中执行测试,在 plugin 中测试会失败。这篇文章 对 grails service 测试方法进行了说明,但用于 plugin 时出现问题,例如在 plugin 中放了 domain、service,想用 unit test、integration test 对 domain、service 进行测试时,会报告错误。典型...原创 2020-04-14 14:20:58 · 245 阅读 · 0 评论 -
Grails 的 Controller 单元测试都有什么作用?如何利用好它?
介绍了 grails 中如何编写 controller 单元测试来测试 controller 的逻辑,还涉及了对 controller 的功能测试(验收测试)。原创 2020-04-13 20:17:27 · 380 阅读 · 0 评论 -
如何将 Groovy GORM 独立地用于 Java 项目
Groovy 的 Joint Compile 产生的 GORM entity 类存根代码缺少 hasMany 属性的方法D:\git\java\gorm-for-java-standalone\src\main\groovy\Main.java:37: 错误: 找不到符号 phone.getButtons().addAll(Arrays.asList(powerButton, v...原创 2020-04-11 19:36:02 · 295 阅读 · 0 评论 -
使用 JSON Views 技术,让 Controller 返回 JSON 串
通过三步使用 Grails 的 GSON View 技术输出 REST 接口中的 json 响应串。原创 2020-04-11 17:16:33 · 791 阅读 · 0 评论 -
如何让 Postman 自动复制JWT 登录后的 Token 到其他API请求?
利用 Postman 的 Test script 功能自动复制 JWT Token 到其他 REST API Tab。原创 2020-04-11 17:13:35 · 1194 阅读 · 0 评论 -
Grails 的 constraints 可以继承吗?
我们都知道 Grails 使用 GORM 项目来定义实体类(Domain Class),并且可以给 Domain Class 添加约束,例如字段是否可null,最大长度多少等等,还可以自定义 validator 来实现对特定规则的检查。同时 GORM 支持 Domain Class 的继承,默认情况下会用 hierarchy in table 的方式实现,就是将所有类都用一张数据库表来定义,通过...原创 2020-04-10 20:57:14 · 210 阅读 · 0 评论 -
如何将一个后台管理模板移植到 Grails 中?
将 start-bootstrap-admin2 模板移植到 grails 的方法原创 2020-04-08 19:54:21 · 258 阅读 · 0 评论