问题标签 [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.

0 投票
1 回答
95 浏览

session - 使用户/会话信息在 Grails 中的应用程序中可用

这是我试图解决的一个类/流程设计问题:

我正在尝试使用户的会话信息在我的 Grails 应用程序中可用,而无需(或要求)在服务层和控制器之间传递 HttpSession。

目前,我有一个过滤器,一旦用户登录,所有与用户相关的信息都会映射到 UserSessionHelper 类中,我将该类的实例添加到会话中,例如:

我希望能够访问会话对象及其在我的应用程序中随处可见的内容,而无需显式传递它(作为参数),就像 grailsApplication在整个 Grails 中可用的方式一样。

有人可以给我一些关于如何以线程安全的方式完成此任务的提示吗?

我正在使用 Grails 2.4.2

谢谢。

0 投票
1 回答
36 浏览

unit-testing - 为什么添加 grails 服务单元测试会破坏控制器单元测试?

使用 Grails 2.4.2 版

我有成功通过的控制器单元测试。一旦我添加了一个测试 MyService 的 MyServiceSpec,一些控制器单元测试就开始失败。如果我注释掉我的 MyServiceSpec 测试,它们会再次通过。我已经能够将其缩小到与 MimeType bean 初始化相关的内容。

如果 MyServiceSpec 运行,则使用打印的 MimeType

输出

没有 MyServiceSpec 它是

如果没有 json mime 类型,则无法正确呈现响应并且测试失败。我没有看到任何关于允许或禁止对服务类进行单元测试的详细文档。

进行服务级别单元测试是否不正确?是否应该转移到集成测试区?相关问题是,为什么在引入服务单元测试时,其他控制器测试的默认 MimeType 配置会消失?

0 投票
2 回答
683 浏览

grails - Grails-如何获取集合中的部分值?

我有一个呼叫方的域并且有很多受邀者。party.invitees 给我一组受邀者的集合。我只想获得一些受邀者,所以我尝试在我的服务中执行以下操作。

它没有给出正确的结果。它给了我所有的受邀者,而不是只给了我所要求的具体内容。

0 投票
1 回答
1483 浏览

java - 在 Grails 控制器中包含具有会话范围的服务?

使用 Grails 2.4.5 我有以下服务:

我想在控制器中使用此服务:

我尝试了Grails scoped-proxy 插件的 0.3 版。但我收到以下错误:

如何在 Grails 控制器中包含具有会话范围的服务?

0 投票
1 回答
501 浏览

grails - 如何为 Grails 服务运行测试

当我跑

或 grails test-app mypackage.MessageServiceSpec

我总是收到错误

这里有什么问题?

更新:运行命令是

0 投票
1 回答
1321 浏览

grails - 在 Grails 服务中获取请求

Grails 服务中,我正在尝试获取请求,但出现以下错误:

这是我在服务中的代码:

有什么遗漏吗?

谢谢

0 投票
1 回答
56 浏览

grails - springSecurityService 在构建角色之前添加第二次身份验证

我正在使用springSecurityService。我的流程如下:步骤#1:springSecurityService应该检查用户和密码。如果成功,步骤#2:检查第二次认证。如果成功,第 3 步:建立角色并登录。

我尝试以多种方式实施但没有成功,有人可以建议吗?只是为了澄清,基本上我需要一个两因素身份验证。

谢谢!

0 投票
2 回答
713 浏览

grails - 如何用 Groovy 闭包包装所有 Grails 服务方法?

Grails 2.4.x 在这里。

我要求由 生成的所有 Grails 服务的所有方法都grails create-service <xyz>使用以下逻辑“包装”/拦截:

在哪里:

  • log.error(...)是您在使用注释对类进行注释时获得的 SLF4J 提供的记录器@Slf4j;和
  • ExceptionUtils是来自org.apache.commons:commons-lang3:3.4; 和
  • myAppExceptionHandler是类型com.example.myapp.MyAppExceptionHandler;和
  • 对于 Grails 服务中定义的每个方法,这种行为都存在(或者在需要以某种方式显式调用的情况下可以选择存在)

所以很明显,这个包装代码也需要包含import这些类的语句。

因此,例如,如果我有一个WidgetService看起来像这样的:

然后在这个 Groovy/Grails/closure 魔术发生之后,我需要代码表现得就像我写的一样:

关于我如何能够实现这一目标的任何想法?我担心纯 Groovy 闭包可能会以某种方式干扰 Grails 在运行时对其服务所做的任何事情(因为它们都是没有显式扩展父类的类)。

0 投票
1 回答
320 浏览

grails - 是否可以强制刷新保存在服务中的域?

在服务中保存域对象时,flush: true在保存域时,在我必须使用该对象之前,该对象没有得到保存。

我不确定如何在我正在使用的任一服务中强制刷新休眠会话。

在某些情况下,我正在对 API 服务进行 API 调用,该服务转到另一个服务,我在其中保存域,然后返回 API 服务,然后将字符串添加到 RabbitMQ 队列,然后向用户返回 200OK . 但是因为域没有被保存在第二个服务中,所以当项目被添加到队列中时,rabbitMQ 在域被保存之前处理消息。

编辑:

我目前的修复:

API控制器:

API服务:

我保存域的服务:

0 投票
2 回答
1587 浏览

grails - 删除 Grails 服务中的记录

Grails Service中,我必须从 Db 中删除记录,但出现以下错误:

虽然@Transactional(readOnly = false)在我的服务中有,但这是我的服务代码中的删除部分: