问题标签 [grails-services]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - Grails Hibernate Session 或 Spring Transaction 破坏域验证错误
所以我的问题是,在我可以在页面上呈现它们之前,我的验证错误已从我的域对象中删除。我以为我过去已经修复了这个错误,但它又悄悄地出现在我身上。
这是我的原始实现。tripService.stepData(trip)
调用时正在清除错误。
编辑 - 我不应该只在页面添加到 hasMany 关系时遇到这个问题。
控制器 -
服务 -
所以我在网上做了一些阅读,有人在 2 年前的论坛帖子上说休眠中有一些东西......可能的错误......我不知道,但他们的建议奏效了。建议是将控制器包装在withTransaction
:
这对我来说很好。现在的问题是我认为我有一个tripService
再次调用的标记库。进行该调用时,它现在正在清除我的验证错误。这真是令人沮丧。有没有人知道我可以做些什么来解决这个问题?
编辑:添加从 taglib 调用的服务方法:
grails - 如何知道 Grails 服务中的事务方法是否成功?
我有这样的事情:
}
我想知道事务方法是否成功,我不想检查每个域对象中的错误属性,因为逻辑涉及到许多域类,这会很困难。
grails - 环境特定的 Grails 服务配置
使用环境特定值配置 Grails 服务的最佳方式是什么?我相信有两种选择:
- 从服务类中访问 grailsApplication 值或
- 在 Config.groovy 或 resources.groovy 的 beans 闭包中配置服务 bean。
我在 stackoverflow 和其他地方看到了几篇文章,这些文章展示了如何做 #1(在服务中访问 grailsApplication)。其中一篇文章是:将 grails 应用程序配置注入服务。
但是,我认为这会造成服务与 Grails 的不必要耦合。这不是类似于在 pojo 中访问 Spring 的 applicationContext 而不是配置/注入值吗?此外,到目前为止,我还没有任何运气让它在服务类的单元测试中工作。
两本书都有注入属性的示例(方法#2)。The Definitive Guide to Grails 2,第 10 章,标题为“Services in Action”的一本书展示了如何做到这一点,但没有特定于环境的值。Groovy and Grails Recipes 一书,第 16-2 节也展示了一个使用 resources.groovy 的示例,但我还不能让它工作。
以下博客文章也有一个很好的示例,但不是特定于环境的:http: //ldaley.com/post/1253952347/getting-more-out-of-property-override-configuration。Grails 参考的第 15 章也与这些示例一致,并展示了如何在每个环境的基础上设置 bean 的属性。
然而,这两种方法的例子都没有给出任何意见或合理的做法。这两种方法真的没有优点和缺点吗?注入方式不是更容易单元测试,更符合spring的做事方式吗?
弥敦道
grails - 服务是否可以返回 404 响应?
是否存在可以从服务(或其他非控制器方法)引发的异常或其他东西,这些异常或其他东西会中断当前的响应处理并向用户返回 404?
在 Django 世界中,有get_object_or_404
一个引发了Http404
具有这种效果的异常。我正在写服务;如果该服务确定用户无法访问所请求的对象(在这种情况下它尚未发布),我希望它触发 404 并停止剩余的执行。目标是让调用服务的控制器 DRY 并且不总是重复def obj = someService.getSomething(); if (obj) {} else { render status: 404}
调用。
摘要:
在 Django 中,我可以在任何时候引发 aHttp404
以停止请求处理并返回 404。在 Grails 中是否有等效或方法可以做到这一点,而不是来自控制器?
datasource - 将数据源注入 Grails 服务的问题
在我的服务中尝试以下操作时遇到问题:
当我执行此代码时,我收到错误:“必须指定非空连接”。根据我的阅读,我相信上面的代码应该可以工作(这不是单元测试)......所以很明显我错过了关于 Grails 服务的一些东西?
感谢您在这里的任何帮助,
grails - Grails 范围为 Singleton,许多用户登录并执行操作
我知道默认情况下,Grails 中的服务范围是单例的。这意味着一个实例被创建并传递。在与许多用户打交道时,例如 Facebook 或 Twitter,范围应该是会话还是其他?我很欣赏一些解释。我正在使用 Grails 设计一个社交网络类型的网站,我想知道将范围设置为什么。我知道一种解决方法是评估使用单个实例是否会引起问题,但我对此知之甚少。
grails - 公开为 REST 服务的 Grails 服务方法
我是 Grails 的新手。我已经看到如何使用 UrlMapping.groovy 文件和使用 GET/POST/PUT/DELETE http 方法将控制器操作/方法公开为 RESTFull 服务。
现在以下是我的问题。
1.是否有任何方法将服务类方法(Grails 应用程序中的 /service 文件夹)公开为 RESTFull 服务,并以与我访问上述控制器操作类似的方式访问它们。
2.有没有办法将服务类方法公开为 SOAP 服务?
grails - 如何在 grails 服务类中使用 g.formatNumber
我想在服务中使用 g.formatNumber,我尝试了以下方法,我上网了。这不起作用,它给了我错误"Cannot invoke method formatNumber() on null object"
,代码如下
这个怎么做。
grails - com.easytha.Student 条目中的 Grails-null id(发生异常后不要刷新 Session)
我已经看到了这个问题的几个线程,没有一个可以拯救我的 DomainClass 中有以下内容
elasticsaerch 是一项服务,我已将其添加到静态瞬态列表中。似乎在成功调用索引方法后抛出了这个异常
这是索引方法的代码
“对象索引成功”打印在控制台中。
bootstrap.groovy 具有以下内容
更新
我试过Student.withNewSession { elasticSearchService.index(this) }
哪个有效。
hibernate - org.hibernate.StaleObjectStateException:同时保存域类
我有以下代码
并在上述代码的最后一行引发以下异常
我已经看到几个线程讨论相同的问题,据他们说,我也尝试过使用,我studentInstance.withTransaction
还将studentInstance.withTransaction
服务的范围更改为请求,但到目前为止没有任何帮助。
这绝对是一个线程问题,因为这只发生在 20 到 30 个用户同时调用此代码时。