问题标签 [grails3]

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 回答
1297 浏览

grails - Grails 3 和 IntelliJ 无法启动项目

甚至不知道从哪里开始。我已经安装了 grails 3.2.4 我正在使用 IntelliJ IDEA Ultimate 2016.1。我可以使用 grails-3.2.4 创建一个新的 grails 项目,它似乎成功了,Grails 控制台显示 create-app 成功。项目创建并打开一个 IDEA 窗口,但显示消息:

我不知道这个错误来自哪里或如何指定密钥库。如果我进入项目目录 (~/myProject) 并尝试从命令行运行 grails,它会在出错之前尝试启动:

我尝试将代理信息添加到 gradle.properties 文件:

这似乎没有效果。

除了最初的 grails 控制台输出之外,IntelliJ 中的项目似乎甚至没有 grails 支持......我无法右键单击以在项目上创建新的 Grails 对象。“工具”菜单没有“Grails”子菜单。运行配置不允许我选择要运行的 grails 项目。在这一点上,我只是在尝试创建一个新项目并在 grails 3 中运行。

更新:我unable to find certification path通过下载 gradle-version-bin.zip 文件并从gradle-wrapper.properties本地而不是在它尝试开箱即用的外部分发 URL 引用它来克服最初的错误。这似乎允许它尝试更新,但因错误而超时

我的 IDE 代理设置是正确的(首选项 --> 外观 --> 系统设置 --> HTTP 代理)使用自动代理配置 URL(通过从首选项窗口运行“检查连接”确认)。还尝试将 proxyHost 添加到gradle.properties我上面所说的。不过,似乎更新没有使用代理。

更新 2:在手动下载 gradle 并在本地安装后,我最终更新了 maven 存储库 URLbuild.gradle以使用 http 而不是 https。一旦我这样做了,我就可以在 gradle 窗口中刷新项目。完成后,gradle 视图终于显示有一个项目,并且 grails 命令可用。

不太精通证书,但我认为我应该能够从安全存储库下载依赖项。

0 投票
1 回答
149 浏览

gradle - Grails 3 - Angular 模板资产管道未将转换后的 js 文件捆绑到 application.js

我正在使用 Grails 3.1.10、angular-template-asset-pipeline 2.2.6 和 assets-pipeline-gradle 2.8.2

当我在防火墙后面工作时,共享配置文件对我来说很困难,但一般问题与此https://github.com/bertramdev/grails-asset-pipeline/issues/336大体相似 (讨论开始了,所以我会有随时更新问题)

在“grails run-app”下一切正常,但是当我运行“grails war”时:

  1. 模板正确转换为 js 文件
  2. 在 /webapps/myApp/assets 下的 tomcat 中爆炸
  3. application.js 捆绑结果中存在,因此我的应用找不到任何 html。

任何帮助表示赞赏。

我被要求将资产东西放在我的 application.groovy 开发环境中以使 run-app 工作,但我不确定在运行“grails war”时是否使用了 application.groovy .. 我不喜欢重复资产管道配置。(每个环境的 build.gradle 和 application.groovy)

谢谢!

0 投票
1 回答
257 浏览

spring - 如何在 Grails 3 中将 ServletForwardingController 添加到 GrailsDispatcherServlet?

我正在尝试将 Grails 3.2 应用程序配置为在调度程序 servlet 旁边使用 Vaadin 8。我添加了对“com.vaadin:vaadin-spring-boot-starter:2.0.0.beta1”的编译依赖,它会拉动必要的弹簧机制(例如 SpringVaadinServlet 等)和 Vaadin 依赖。Spring Vaadin 插件依赖于配置为将所有 Vaadin 请求从 DispatcherServlet 转发到 Spring Vaadin servlet 的 ServletForwardingController。我应该如何为 GrailsDispatcherServlet 配置它?充其量,这将是可以放入插件中以供重用的东西。

0 投票
1 回答
156 浏览

grails - Grails 升级到 3.2 使用配置类型 requestmap 破坏了 springsecurity

将 Grails 从 3.1.8 升级到 3.2.4 后,应用程序陷入了重定向循环,总是试图重定向到 /login/auth。缺少 requestmap 条目的典型行为。我也尝试过升级hibernate4,如grails 3.2的升级说明中所述

使用 Grails 3.1.8 的工作应用程序的原始依赖项

根据升级说明

但是应用程序仍然被困在这个重定向循环中。我清楚地将请求映射确定为问题的根本原因,因为我停用了此功能并切换到静态规则。有什么建议可以使用哪些依赖项来让 springsecurity 插件与 Grails 3.1.8 一起使用?

使用以下 springsecurity 版本:

0 投票
1 回答
602 浏览

grails - Grails 3.2.4:未调用自定义身份验证过滤器

从 grails 2.5 升级到 grails 3.x 时,不会触发用户名密码身份验证过滤器。

我正在使用 spring-security 核心插件 3.1.1

这就是自定义过滤器的样子

应用程序.groovy

资源.grrovy

0 投票
2 回答
313 浏览

grails - Grails 3 UrlMappings

你如何映射一个有两个 id 的 Url:

/orders/$id1/orderlines/$id2

id2 是可选的

/orders/$id1/orderlines GET -> 订单 id1 的所有订单行 /orders/$id1/orderlines/$id2 GET -> 在订单 id1 中显示订单行 id2

这些方法将被映射到 OrderLineController

使用 Spring MVC @RequestMapping 和 @PathVariable 非常容易。

Grails 3 不允许@RequestMapping(有一些技巧可以让它工作——但我不想走那条路——不必要的复杂)。

感谢帮助。我做了很多谷歌搜索。

0 投票
1 回答
345 浏览

authentication - Grails 3 - springSecurity reauthenticate and SessionRegistry

My Grails application (powered with Spring Security plugin) has in place a very basic support a 'quick login' feature, basically prompting users to type only their password to login while userId is stored in an encrypted cookie.

So in my controller I'm using springSecurityService.reauthenticate(userid)
to authenticate the user manually.

My application has also the requirement of not allowing concurrent sessions. So, along with the previous line, I added

The issue is that these reauthentications do not reflect in an entry in sessionRegistry, and that's an issue with the above code, as among sessions I wouldn't find any session for that user.

The problem I'm not currently able to resolve is:

  • user [U] logs in to location [A]
  • [U] logs in to location [B] => session [A] is forced to expire
  • [U] keeps on navigating/refreshes [A], and is prompted to quick login
  • [U] logs in again to [A] => reauthenticate is triggered, nothing is added to sessionRegistry
  • [U] keeps on navigating/refreshes [B], and is prompted to quick login
  • [U] logs in again to [B]
  • [U] is logged on both [A] and [B]

I also tried to add
sessionRegistry.registerNewSession(newSessionId, authentication.getPrincipal())
in [L] position, but this session and the regenerated one seem to be not related in any way.

Any suggestion is welcome! Thanks in advance.

Config

  • Grails 3.2.4
  • Spring Security Plugin (core) 3.1.1
0 投票
1 回答
240 浏览

spring - Auth0:身份验证时出现 NoSuchMethodError

当我向受保护的资源发出请求时,会发生 NoSuchMethodError。

基于 Grails 3.2.5 的项目,基于 Spring Boot 1.4.4

应用配置:

从我的 auth0 帐户获取的 clientId、secret、audience 和其他配置参数。

build.gradle 部分:

这是我的堆栈跟踪:

我可以分享一个可以帮助重现此错误的演示项目。

0 投票
1 回答
874 浏览

grails - 在 Grails 3.2.4 中,具有 .async.task 调用的控制器将 request.asyncStarted() 设置为 true 但不呈现响应

首先,这在 Grails 2.5.4 中不是问题。

我正在对我的 Grails 控制器进行角度 AJAX 调用,但 Grails 控制器从不响应。前端调用看起来像这样..

我已经确认 AJAX 调用不调用任何类型的 .async.task 的其他控制器立即返回,并且很好。然而,这个端点有两个 async.task,我可以知道在定义第一个 async.task 之后触发了 asyncStarted 标志:

第一个 request.isAsyncStarted() 返回 false,第二个返回 true。当我将日志记录一路调高并在我的日志中注意到这条消息时,我被告知这是一个异步问题:

2017-02-08 18:47:54 调试 ogweb.servlet.mvc.GrailsDispatcherServlet:为并发处理打开响应

以前在 Grails 2.5.4 中,我只需要简单地调用 availabilityTask.get() 并使用指定的适当模型和布局来渲染视图。现在看来,我必须这样做才能使响应刷新到前端:

这看起来很烦人,因为我没有将任何承诺或可调用对象传递到模型中,而且我已经在检查任务是否完成。我是否遗漏了一些迫使我这样做的东西,或者是这种预期且记录不充分的行为(Grails 文档中关于 Async 的任何地方都没有提到需要调用 .dispatch() 来刷新异步请求..

2017 年 2 月 10 日更新

我试图将承诺传递给模型,例如:

认为结果转换器会在模型中检测到 Promise 但没有发生自动调度。我想模仿我在 Grails Async 文档中看到的内容,但我想整个模型必须是 PromiseMap 才能发生自动调度?(当我有一个控制器拉同步和异步数据时,这并不理想)

文档部分:

无论如何,目前看来我的选择是将带有任何 *.async.task 的控制器包装在更大的任务 {} 闭包中,或者手动管理调度。

0 投票
1 回答
182 浏览

grails - 在 grails 应用程序中使用 JSP

我将 java web 应用程序迁移到 grails 中。我在 /src/main/webapp 文件夹中有一些旧版 JSP 视图。有没有办法在我的 grails 控制器中使用它们而不将它们移动到 grails-app 文件夹中。

谢谢