问题标签 [grails-3.3.x]
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.
java - Grails 3:单元测试拦截器:不会在拦截器中停止
出于演示目的,我使用以下文件设置了一个全新的 grails 应用程序:
当我到达http://localhost:8080/hallo时,“halloechen”被打印出来,因为它被设置为拦截器before()
方法中的请求属性,就像我想要的那样。现在我想对拦截器进行单元测试:
此测试失败,因为该heading
属性未设置为请求(无论如何这是一个模拟请求)。事实上,在运行单元测试时,拦截器似乎甚至没有被调用。我在before()
方法中设置了一个断点,在调试测试时我从来没有到达那里。这很奇怪,因为我希望拦截器测试至少调用拦截器。我知道我可以按照这里的描述重写测试,但我的意思是拦截器根本不会被调用。那正确吗?另一件事:getModel()
在测试中调用总是返回null
。如何在我的测试中获得模型?
grails - Grails 3.3.9:转发复制参数
我们正在从 Grails 2.x 迁移到 3.x。使用 forward 函数时,我可以观察到一些不同的行为:
当调用http://localhost:8080/foo?test=1并在方法中停止时,bar()
我可以看到params
如下所示:
如您所见, 的值test
被保存为String[]
. 这种行为与 Grails 2.5.6 中的行为不同。有没有办法为 Grailsforward
函数设置一个标志,以便不将参数传递给重定向控制器?
grails - 使用 grails 3.3 在命令对象中使用共享约束
我在将旧单元测试从 grails 2.5.4 迁移到 grails 3.3 时遇到问题
我有很多使用共享首选项的命令。一个例子,de UserController里面的UserCommand:
在 application.groovy 我以这种方式定义了约束:
我也将User
域定义为:
写一个我做的测试:
它按预期工作。但是当我这样做时:
它抛出一个异常。
我以为我在 application.groovy 文件中犯了一个错误,但共享约束适用于域..
这是一个具有相同问题的示例项目:https ://github.com/almejo/commandtest
有什么想法吗?
spring-security - 创建名为“securityTagLib”的 bean 时出错-(grails-spring-security-saml 插件)
我们目前正在使用 PingFederate 和 SAML 实施 SSO。在这个过程中,我们也从 Grails 2.4.4 升级到 Grails 3.3.9。
我们在开发工作时没有任何问题,但是在 tomcat 上部署我们项目的 war 文件时,我们似乎在 SAML 插件和 spring-security-core 之间遇到了某种冲突,特别是在堆栈跟踪中看到的 SamlTagLib 和 SecurityTagLib以下。
如果没有 saml 插件,则不会发生此问题。
如果有人能提供有关为什么会发生这种情况和/或解决此问题的任何信息,我们将不胜感激。
我们的构建文件具有以下依赖项;
堆栈跟踪:
grails - 如何在 grails 3.3.11 中深度克隆域对象?
我正在尝试deep clone
我的域对象。它有大约 10 个一对一的映射,而且还有更多。
我尝试了以下代码段:
但是prop.isAssociation
没有找到。有谁知道如何检查关联grails 3.3.11
。这曾经在1.3.7
版本中工作。
spring - 方法不允许 405,在 grails 从 2.5.2 升级到 3.3.11 后点击 POST 请求
将 grails 2.5.2 升级到 3.3.11 后,我在点击 POST 请求时收到 Method Not Allowed 响应。GET 方法工作正常。
控制器:
网址映射:
请求:[POST] localhost:5555/OMApi/phase
回复:
对于 grails 2.5.2,一切正常。它看起来像一个与 Spring 相关的问题。关于这个问题的所有搜索都没有结果。任何想法?是由于 UrlMapping 中的一些错误还是 CORS 拦截器无法正常工作等其他问题?
gradle - 在应用程序重启时调用自己的 API(Grails 3.3.9)(Tomcat 重启)
在构建 grails 3.3.9 应用程序时,我遇到了一个场景,我需要在应用程序重新启动时调用它自己的 API(出于特定目的)。我只要我知道我们不能通过 boostrap.groovy 进行 API 调用,所以我找到了可以进行自己的 API 调用的 Application.main 方法的替代选项。但这仅适用于 Grails - 运行模式。我需要让它在 Grails 上运行 - 战争模式 - 因为一旦在 QC 中验证,我必须在生产环境中部署战争。
我可以设置 cron 来执行此操作,但我正在寻找 grails 内置功能。
其他信息:Grails:3.3.9 Gradle:4.10.3 Tomcat 8.5.50
grails - Grails 3.3.2 Spring Security CAS 不能通过负载均衡器工作,但可以通过部署在其上的内部服务器正常工作
我们有一个使用 Spring Security Core 和 Spring Security CAS 插件的 Grails 3.3.2 应用程序。使用自定义 userDetailsService 类从 Oracle 数据库中获取用户信息。当点击部署应用程序实例的 tomcat 服务器的内部 URL 时,此应用程序通过 CAS 登录很好,但是当我们尝试通过负载均衡器访问应用程序时,我们会遇到重定向循环和错误。
这是设置。我们有两个实例;一个配置为直接在应用服务器上访问,另一个通过充当反向代理的负载均衡器访问。直接在服务器上访问一个工作正常(重定向到 CAS,您登录,CAS 重定向回来,然后您就进入了)。通过负载均衡器重定向到 CAS,您登录,CAS 将您重定向回来,凭证被正确传递,但随后 Groovy 中的某些东西将其匿名化,您得到拒绝访问,然后返回 CAS。但是 CAS 票是有效的,所以 CAS 把你送回去,然后循环往复。在浏览器确定存在错误并停止它之前,它会重复 5 或 6 次。
将日志记录设置为调试,我们可以看到哪里出了问题,但无法弄清楚原因。
当它仅在内部服务器上用于我们的应用程序实例时,我们的自定义 userDetailsService 被用作主体而不是grails.anonymous.user。
谁能告诉我为什么在一个实例中 SecurityContextHolder 从我们的 userDetailsService 获取主体并且 CAS 工作正常,而在负载均衡器后面的另一个实例中,SecurityContextHolder 正在获取 'grails.plugin.springsecurity.authentication.GrailsAnonymousAuthenticationToken@dc4d198: Principal: org .springframework.security.core.userdetails.User@dc730200:用户名:grails.anonymous.user;
谢谢你,迈克