Grails 是否可以覆盖方法**CreateLink**和**CreateLinkTo**的行为?

是否可以覆盖方法CreateLink和CreateLinkTo的行为?您可以使用元编程替换ApplicationAglib上的闭包 ApplicationTagLib.metaClass.getCreateLink = {-> return {attrs-> // your code here } } 我从未尝试过,但它可能会奏效:)您只需创建自己的标记库,然后自己定义标记即可 class MyTabLib { def createLink = {at

带Grails的DDD

我找不到任何关于使用Grails执行(DDD)的信息 我正在寻找任何最佳实践、经验笔记,甚至是开源项目,它们都是使用Grails实现DDD的好例子。请阅读第3章。它是通过让你在一个示例项目上工作来展示的,甚至展示了如何从头开始构建它以及添加插件等的一步一步的过程。我强烈推荐这本书,非常有价值的参考 请注意,我也是一名新的grails用户。目前我还不知道有任何与grails和DDD相关的书籍。就我个人而言,我不会只关注圣杯。领域驱动设计是一种思维方式,一种组织应用程序和代码的方式。因此,它与技术无

Grails/GSP:突破<;g:每个>;

有没有办法摆脱困境?我有一个页面,在这个页面中,我正在遍历一个列表,我必须确保选中一个复选框,如果它是存储在DB中的值 为了更清楚一些,请考虑一下: <g:each in=${list1}> <g:each in=${list2}> <g:if test="${list1.id == list2.id}"> <input type="checkbox" ... checked="checked" />

日期验证的Grails最小约束

我是grails和groovy的新手。我有一个带有开始和结束日期的项目域类。我想加入一个约束,指定结束日期必须大于开始日期(然后,project的另一个子对象需要使用父项目的日期验证其startdate和enddate)。这是可能的最小约束,还是我必须把它放在其他地方?“唯一约束”确实允许以这种方式链接两个特性,希望“最小/最大约束”允许这样做。 我试过了 startDate(blank:false) endDate(blank:false, min:'startDate') 它抛出一个错误,

Grails验证依赖于其他属性

使用grails执行类似操作的正确方法是什么: class myDomainThing { String description MyOtherDomainThing otherThing static constraints = { description(nullable:if(otherThing)) otherThing(nullable:if(description)) } } 因此,我要么想要一个指向OtherDomainting的链接,要么想要一

grails在不重建war的情况下配置log4j?

这似乎很奇怪,但当grails构建war文件时,它不会生成log4j.properties或log4j.xml文件 相反,它在WEB-INF/WEB.xml中有以下内容 web.xml: org.codehaus.groovy.grails.web.util.Log4jConfigListener 显然,“grailslog4jdsl在内存中配置日志记录”。这里的问题是-log4j不会自动公开给JMX以便我们进行动态更改,并且grails不会生成log4j文件。但是Config.groovy

Grails 如何使用动态查找器排除GORM中的某些列?

我有: 我希望能够运行如下查询: DbDeployment.findAllByFabric("f1", params) 但我想确保不会检索到详细信息(可能很大)列 有办法做到这一点吗 选项1:为大数据字段创建关联 来自的一个建议是将大数据属性拆分为一个单独的域,这将导致它延迟加载。例如: class DbDeployment { Date startDate = new Date() Date endDate ... DbDeploymentDetails de

在Grails中,多个类与同一个域类有许多关系

我使用的是Grails,我有一个域模型,该模型对同一个域类具有多个属性,如下所示: static hasMany = [ posts : Post, likes : Post, dislikes : Post ] 我遇到的问题是,当我在帖子列表中添加内容时,它也会以某种方式进入喜欢和不喜欢列表。至少,当我遍历这些列表时,它是这样的 我认为问题是,我在我的帖子域中也有以下关系: static belongsTo = [ contributer : Contributer ] 配置这些关系以使我

Grails:println只在某些时候起作用

我创建了一个全新的grails项目,并将其放在引导程序中: ExpandoMetaClass.enableGlobally() Integer.metaClass.precision = {->return 1} println 3.precision() println "rofl" println 15.precision() 它实现了我所期望的,运行应用程序打印: 1 rofl 1 但是如果我取出println“rofl”它就不会打印第二个了。它只打印一个1,没有rofl。。。

grailsgorm:groovy映射

具有以下域类: class Word { Map translations static hasMany = [translations: String] String toString(){ id } } 还有一些保存在grails引导中的实例: def word1 = new Word(translations: [en:"game"]); word1.save(failOnError: true, flush: true) def wo

Grails2.0.1依赖项下拉列表

我想知道是否有人在Grails2.0.1中开发了类似Country and State的依赖下拉列表,而没有使用prototype。欣赏代码片段您只需使用remotefunction和g:Select,类似 <g:select onchange="${remoteFunction( controller:'example', action:'country', upd

无法在域类中使用grails g.link

我在域类中有一个返回url的静态方法。我需要动态构建该url,但g.link不起作用 static Map options() { // ... def url = g.link( controller: "Foo", action: "bar" ) // ... } 我得到以下错误: Apparent variable 'g' was found in a static scope but doesn't refer to a local variable, stat

grailsgorm自动更新问题

更新帖子: 在控制器中,如果我这样做: def obj = new Test(name:"lol") obj.save(flush:true) obj.name = "lol2" //a singleton service with nothing to do with obj testService.dostuff() /* "obj" gets persisted to the database right her

Grails:使用g:each在表行中预选一个g:select选项

我在grails select下拉列表中预选一个条目时遇到了问题。我有一张桌子,每行有一个下拉列表 表中的行由g:each定义: <g:each in="${fooList}" status="i" var="fooInstance"> 问题在最后一栏。该对象中有另一个对象(条形xyz)。我希望能够在当前Foo中更改此栏(它是一个域对象)。但是当页面加载时,Foo中可能已经有一个条 如何将选择绑定到预填充的子对象?select包含子对象的可能值(当前所有可用的条),但绑定不起作用

Can';t将grailsApplication注入服务

我在将grailsApplication注入到Grails2.1中创建的服务中时遇到了一个问题。我已经构建了一个简单的测试应用程序(希望我能够解决这个问题,然后将补丁移植到我的实际应用程序中),它由一个控制器、视图和服务组成 控制器如下所示: class IncidentController { static allowedMethods = [save: "POST", update: "POST", delete: "POST"] def incidentService

Grails 如何从Spring Security UI获取正确的错误消息?

我一直在使用SpringSecurity用户界面和SpringSecurity插件。我们有我们的register.gsp页面,它按预期工作。我们正在将css移动到twitter引导,因此我们更改了register.gsp文件,以符合我们的要求 所以我们改变了: <s2ui:textFieldRow name='username' labelCode='user.username.label' bean="${command}" size='

如何为插件开发创建Grails框架项目?

我正在使用构建在Grails之上的(某种)框架。该框架是一组Grails插件,用于向Grails应用程序添加功能(例如用户身份验证)。这个框架的设置有点麻烦,因为它需要在应用程序的Config.groovy文件中进行大约64行特定于站点的配置 我想将我的插件作为插件开发到此应用程序。也就是说,Grails应用程序实际上只是一组已安装的插件和一些配置文件 我已经创建了一个本地Maven风格的存储库来保存我的所有插件。因此,我可以将插件依赖项添加到BuildConfig.groovy文件中,它们将自

Grails无法解码unicode字符

对于Grails应用程序,我有以下配置: Grails 1.3.7 在config.groovy文件中设置以下内容 grails.views.default.codec=“none” grails.views.gsp.encoding=“UTF-8” grails.converts.encoding=“UTF-8” Tomcat 7.0.22 在tomcat的server.xml文件中设置以下内容 URIEncoding=“UTF-8”useBodyEncodingForURI=“true” 在

Grails 存储用户的域设计';s的国家、年龄组等

情况是这样的:用户表包含的数据与其他用户的数据(如国家、年龄组、性别等)重叠 在MySQL中,我会使用三个或两个表。在存储country的情况下,我将使用三个表:一个是user表,另一个是country表,最后一个连接这两个表。(当然,如果一个用户有一个国家,我可以使用两个表。) ex)用户(id,otherUserInfo), 用户国家(id_用户,id_国家), 国家(id,countryName) 作为Grails的新手,我想知道表示此模式的最佳方式是什么。是否需要创建2-3个域类?或者是

Grails 正在创建域类的新实例,但未保存

我不想保存一个编辑过的域类,而是想用我所做的更改创建它的一个新实例 def update = { def VariantInstance = Variant.get(params.id) VariantInstance.properties = params def NewVariantInstance = new Variant() //Now Assign Variant Instance new Values

Grails 在列表上使用自定义验证器

我有一个命令对象,如下所示: class TestCreationCommand { String title List testItems = [].withLazyDefault {new VocabQuestion()} static constraints = { title(blank:false,maxLength:150) testItems( validator: { ti ->

Grails 如何在选择GSP页面中从Groovy映射中获取所有值

假设我们有一张像这样的地图: def mostBeautifulCities = [ cadiz : "Cádiz", KeyForCity2 : "some value for city2" ] 我们如何列出所有的值呢?(我没有找到一个简单的方法来查看这些值) 我想在选择控件中显示所有值: <g:select id="city" name="city" from="${ mostBeautifulCities.(...) }" noSelecti

Grails:用插件jaxrs创建restapi,用springsecurityoauth保护资源?

我使用插件jaxrs创建了RESTAPI(),并用实现了Oauth 2 现在我想保护由插件jaxrs创建的资源。你对我有什么建议吗 谢谢 Long Do我认为您应该在rest控制器或方法中使用spring security提供的注释@securied import grails.plugins.springsecurity.Secured @Secured(['YOUR_ROLE']) 资源位于grails应用程序/资源中,而不是控制器中。我使用了@Secured,但它不起作用。现在我用过滤

Grails DetachedCriteria Eq忽略大小写

使用Grails 2.3.0:根据文档: 可以使用第三个参数[ignoreCase:true]创建不区分大小写的Eq标准。像这样: eq(field, string, [ignoreCase: true]) 但是,这会引发一个错误: No signature of method: grails.gorm.DetachedCriteria.eq() is applicable for argument types: (java.lang.String, java.lang.String, jav

重定向到grails中带有param的另一个控制器

当我遇到错误时,我必须重定向到名为step2的控制器操作 这是控制器 def step2(Example exampleInstance) { some code } 这就是我发现错误的地方 if (errorProp) { redirect(????) return } 如何重定向到控制器并同时传递exampleInstance? 我尝试了t(uri:“/spot/step2”),但未能将exampleInstance传递到step

Holders.grailsApplication.config在部署到tomcat时为空

我正在运行Grails2.2.4。以下代码在开发中工作良好。当我将war文件部署到tomcat时,会引发一个异常,即grailsApplication.config为null: import grails.util.Holders public enum PhotoSize { PROFILE(Holders.grailsApplication.config.img.profile.height, Holders.grailsApplication.config.img.profil

为自定义Grails插件创建GroupID和ArtifactID

我正在编写自己的Grails插件。 当我打包它时,我看到生成了pom.xml和plugin.xml。其中,groupId和artifactId分别是org.grails.plugins和plugin-config 我想指定这些应该是什么,以便我的插件最终在artifactory中的正确位置 我该怎么做 谢谢。发布插件的工作是为插件设置默认的groupId。对于所有grails插件,它都是org.grails.plugins 您可以通过在插件描述符中设置属性来修改groupId: class Pl

如何解决在本地主机上运行两个grails应用程序时出现的跨域错误

我正在尝试运行应用程序我的项目,其他战争/战争也在运行。例如,我们有一个war/ear,它有我想要访问的遗留web服务。我的目标是使用我的跑步应用程序部署现有的WAR/EAR。我可以分别部署两者,因为grails在端口8081上运行应用程序,jboss在端口8080上运行应用程序。问题是,当我尝试执行ajax POST、DELETE或PUT时,我遇到了一个跨域错误,因为每个应用程序都有自己的端口。有没有一种方法可以使用runapp使我的grails项目位于localhost:8080/grail

Grails mockhttpservletrequest spock返回null

我正在尝试编写一个函数,它需要请求.getHeader('X-File-Size')返回一个长字符串。所以我试着这样写测试: given: MockHttpServletRequest request = new MockHttpServletRequest() request.getHeader('X-File-Size') >> 2L when: controller.handle() then: 1 * serviceMock.upload(_ as Lon

Grails gdatepicker的默认日期

我在应用程序中使用默认的gdatepicker。结束日期默认为当前日期,可以正常工作,但是我不确定将开始日期日期选择器设置为前一年的7月的语法。似乎这应该是相当容易的,但我还没有找到一个好的例子。谢谢 如果我理解正确,则要求将去年7月设置为默认日期。如果是,那么您可以使用如下内容,但我建议将日期逻辑移动到控制器,然后填充一个模型以包含去年的7月日期: <g:datePicker name="myDate" default="${new java.util.Gr

Grails 生成的控制器&x27;中的版本参数是什么;s更新方法

我正在grails中做一个示例应用程序,我创建了一个赞助商域类,然后生成了相应的控制器 class SponsorController { ... def更新(长id,长版本){ 当我生成一个控制器时,它生成了列表、显示、保存、创建、编辑和更新方法。我理解所有方法代码,但我对更新的方法代码有点困惑,其中包含两个参数id和版本,所以我的问题是这里的版本是什么,在这里使用版本的目的是什么默认情况下添加到每个域类中,并用于实现。 用户A检索域类的实例 用户B检索域类的实例 用户A更新实例 用户B更

如何使用Grails REST客户端生成器插件RestBuilder.get()了解发送的URL?

现在,我正在开发Grails插件,以简化AmazonPaAPI在Grails应用程序中的使用 这个插件的目标是提供方便的TagLib来执行AmazonPaAPI操作,如下所示 <paapi:img idType="ISBN" itemId="4048668161" relationshipType="AuthorityTitle" size="medium" alt="alttext" /> 代码失败 我得到了低于预期的结果。它已经输入了resp.txt <!DOCTYPE

Grails 从“视图”目录加载文件

我想从“视图”文件夹而不是gsp加载现有文件。例如: grails-app/views/test.txt 如何将其作为文件加载并作为内容提供给浏览器 谢谢您可以使用groovyPageResourceLoader来解析此资源。下面是一个非常简单的例子: package example class MyController { def groovyPageResourceLoader def index() { def resource = groovyPa

如何告诉Grails插件使用辅助数据源(不是默认数据源)?

我创建了一个插件,负责RDBMS对辅助数据源的访问,通过这种方式,我们对将要使用它的应用程序隐藏域和服务层(这会阻止他们修改该源)。我将插件发布到artifactory,然后将其成功导入到我的应用程序中。但是,插件使用的数据源文件被从打包中排除,当调用插件中的服务方法时,它试图对我的默认数据源执行这些查询 有没有办法告诉grails插件不要使用默认数据源,而是使用辅助数据源?或者有没有办法让插件不排除自己的DataSource.groovy文件 谢谢 更新 下面提供的答案是可行的,基本上这就是G

依赖项注入在Grails服务中不起作用

我在grails app/services目录下移动了一个类,以便注入springSecurityService。这个类是SpringUserDetailsService类的实现(这是正确的术语吗?)。以下是我在resources.groovy中的声明: userDetailsService(com.company.product.PracticeUserDetailsService) { grailsApplication = ref('grailsApplication') } 此

Grails2.4 GUI错误

我看过几篇文章(比如)指出Grails使用自己的GoogleGuice版本——一个难以捉摸的“3.1.0”版本 然而: 我看到没有3.1.0 Guice JAR发布到Maven/Grails Central;及 当我执行grails依赖项报告时在输出中的任何地方都看不到“guice” 所以我问:Grails有自己的Guice版本是真的吗?如果是,它在哪里发布,为什么在运行grails依赖关系报告时看不到它?? 我这样问是因为GRAILS-11503中发布的解决方案(将exclude子句添加到

重定向后出现Grails Facebook身份验证插件错误

我将(0.17)用于Spring Security(2.0-RC5) 我已经包括了那里要求的所有内容,并按照示例创建了我的服务,以获取登录用户数据(来自Facebook)。 在(我已经完全复制到我的应用程序中)中有一个“FacebookUser create()”函数。 在连接Facebook并重定向回我的应用程序(打开stac)后,我得到: 代码行是 Facebook=newfacebook模板(token.accessToken.accessToken) 创建对象时引发错误。 如果您能告诉我

如何在grails中获取文件扩展名?

我最近开始研究grails,我想知道如何获得 文件的扩展名。例如:test.txt。我想检查扩展名(txt)? 有线索吗 希望我找到了我问题的答案。如何找到分机 一个文件的名称 String fileName=“something.ext”; int a=fileName.lastIndexOf(“.”); 字符串extName=fileName.substring(a); System.out.println(fileName.substring(a)); ArrayList extList

Grails资产管道-minifyJs设置为true不工作

我使用grails asset pipeline插件缩小了我的应用程序(运行grails run app时我没有任何问题)。当我要生成war文件以部署到tomcat服务器时,问题就出现了 | Error 2016-03-13 01:50:16,590 [main] ERROR pipeline.AssetCompiler - Uglify JS Exception Message: [object Object] (/application/target/work/resources/ugl

Grails 2.5.3生产部署NPE(资产管道)

当我尝试访问我的应用程序的登录页面时,我得到了以下stacktrace: 21.03.2016 19:01:52,746: (HVK3) GrailsExceptionResolver: NullPointerException occurred when processing request: [GET] /wmp-hvk3-development/login/auth Stacktrace follows: org.codehaus.groovy.grails.web.pages.e

Grails SwaggyDoc的Spring Security

我正在使用swaggydoc为我的grails应用程序以及Spring Security提供一个自动化的API站点。我正在使用GrailsREST控制器以及Grails3.2.1、SpringSecurity3.0.3和SwaggyDoc3.0.2 问题是,当我启用了spring安全性时,对于我试图公开的其他控制器,在swaggy页面上会出现403。我试着做了一些不同的安全配置,看看我是否可以让它工作,如果我有所有的控制器登录验证它的工作,但这不是我想要的我希望面向公众的REST端点是令牌身份验

从Grails2.5.5中的过滤器访问withFormat

我正在使用Grails作为API 在一个过滤器上,我在请求到达控制器之前定义了一些检查,如果这些检查没有通过,应该返回一个错误 错误发生在XML或JSON格式上,具体取决于内容协商。所以我尝试使用withFormat来呈现过滤器中的错误,但是过滤器不像控制器那样使用withFormat 有没有办法在过滤器上获得内容协商 与此同时,我从Accept标头中进行了自己的格式猜测,但我希望在过滤器中使用Grails with format。我认为您不能 但是,筛选器只支持可用于的方法的子集 控制器和标记

Grails,tagLib g:remoteLink不存在

我正在尝试将删除按钮添加到我的编辑表单中,但未找到任何有效的按钮。当我发现remoteLink可以帮助我时,我尝试了此操作,但将其添加到任何表单/应用时,我始终会得到: 标记[remoteLink]不存在 我正在使用Grails-3.2.4。 也许我需要导入一些东西或..?在Grails 3.x中,remote*标记被弃用并删除。您应该使用javascript库进行AJAX调用。。如果有更好的文档记录,我会节省一些时间。然而,我最终在一个较旧的grails文档中找到了它,但在搜索丢失的tagli

Grails executeQuery子查询

im使用Grails2.4.5 我想根据他们的合同数量检索前三名客户 我正在尝试执行这个代码 def customers = Customer.executeQuery("Select cu, (Select count(*) from Contract co where co = cu.contract) from Customer cu", [max: 3]) 它返回这个错误 二进制逻辑运算符的左侧和右

&引用;CreateTable";关于使用Grails的MariaDB

我的应用程序是基于Grails和MySQL构建的。我们最近将DB切换到了MariaDB,我知道它完全符合MySQL。我现在正试图在我的Grails应用程序中添加一个新的域对象。表创建失败,出现以下错误 您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解在第1行“type=InnoDB”附近使用的正确语法 Grails在语句末尾创建类型为INNODB的表。我发现用ENGINE=InnoDB代替TYPE=InnoDB解决了这个问题。我在DB上手动运行了CREATETABLE

Grails 圣杯是多对一,属于你

假设我有两个域对象,如下所示 class Author { static hasMany = [books: Book] String name } class Book { String title static belongsTo=[author:Author] } 如果我想创建一本书,我必须先创建一位作者,如果我想创建一位作者,我需要创建一些书。因此,我是否必须同时创建一本书籍和作者?一位作者不需要任何书籍。首先创建作者hasMany是一种0:N(零对N

Grails Groovy-map:每次都需要新实例

我的要求是每次访问映射中的值时都获得一个新实例 MyObject { def type } def myMap = [ "key1" : new MyObject() ] def obj1 = myMap.get("key1") def obj2 = myMap.get("key1") obj1和obj2可以是两个不同的实例吗? 如果并行执行/访问,它将如何运行?不知道您的用例是什么,但我想我可以回答您的问题: def myMap = [ "key1" : new MyO