是否可以覆盖方法CreateLink和CreateLinkTo的行为?您可以使用元编程替换ApplicationAglib上的闭包
ApplicationTagLib.metaClass.getCreateLink = {->
return {attrs->
// your code here
}
}
我从未尝试过,但它可能会奏效:)您只需创建自己的标记库,然后自己定义标记即可
class MyTabLib {
def createLink = {at
我找不到任何关于使用Grails执行(DDD)的信息
我正在寻找任何最佳实践、经验笔记,甚至是开源项目,它们都是使用Grails实现DDD的好例子。请阅读第3章。它是通过让你在一个示例项目上工作来展示的,甚至展示了如何从头开始构建它以及添加插件等的一步一步的过程。我强烈推荐这本书,非常有价值的参考
请注意,我也是一名新的grails用户。目前我还不知道有任何与grails和DDD相关的书籍。就我个人而言,我不会只关注圣杯。领域驱动设计是一种思维方式,一种组织应用程序和代码的方式。因此,它与技术无
有没有办法摆脱困境?我有一个页面,在这个页面中,我正在遍历一个列表,我必须确保选中一个复选框,如果它是存储在DB中的值
为了更清楚一些,请考虑一下:
<g:each in=${list1}>
<g:each in=${list2}>
<g:if test="${list1.id == list2.id}">
<input type="checkbox" ... checked="checked" />
标签: Grails
grails-domain-classgrails-validation
我是grails和groovy的新手。我有一个带有开始和结束日期的项目域类。我想加入一个约束,指定结束日期必须大于开始日期(然后,project的另一个子对象需要使用父项目的日期验证其startdate和enddate)。这是可能的最小约束,还是我必须把它放在其他地方?“唯一约束”确实允许以这种方式链接两个特性,希望“最小/最大约束”允许这样做。
我试过了
startDate(blank:false)
endDate(blank:false, min:'startDate')
它抛出一个错误,
使用grails执行类似操作的正确方法是什么:
class myDomainThing {
String description
MyOtherDomainThing otherThing
static constraints = {
description(nullable:if(otherThing))
otherThing(nullable:if(description))
}
}
因此,我要么想要一个指向OtherDomainting的链接,要么想要一
这似乎很奇怪,但当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
我有:
我希望能够运行如下查询:
DbDeployment.findAllByFabric("f1", params)
但我想确保不会检索到详细信息(可能很大)列
有办法做到这一点吗 选项1:为大数据字段创建关联
来自的一个建议是将大数据属性拆分为一个单独的域,这将导致它延迟加载。例如:
class DbDeployment {
Date startDate = new Date()
Date endDate
...
DbDeploymentDetails de
我使用的是Grails,我有一个域模型,该模型对同一个域类具有多个属性,如下所示:
static hasMany = [ posts : Post, likes : Post, dislikes : Post ]
我遇到的问题是,当我在帖子列表中添加内容时,它也会以某种方式进入喜欢和不喜欢列表。至少,当我遍历这些列表时,它是这样的
我认为问题是,我在我的帖子域中也有以下关系:
static belongsTo = [ contributer : Contributer ]
配置这些关系以使我
我创建了一个全新的grails项目,并将其放在引导程序中:
ExpandoMetaClass.enableGlobally()
Integer.metaClass.precision = {->return 1}
println 3.precision()
println "rofl"
println 15.precision()
它实现了我所期望的,运行应用程序打印:
1
rofl
1
但是如果我取出println“rofl”它就不会打印第二个了。它只打印一个1,没有rofl。。。
具有以下域类:
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中开发了类似Country and State的依赖下拉列表,而没有使用prototype。欣赏代码片段您只需使用remotefunction和g:Select,类似
<g:select
onchange="${remoteFunction(
controller:'example',
action:'country',
upd
我在域类中有一个返回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
更新帖子:
在控制器中,如果我这样做:
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 select下拉列表中预选一个条目时遇到了问题。我有一张桌子,每行有一个下拉列表
表中的行由g:each定义:
<g:each in="${fooList}" status="i" var="fooInstance">
问题在最后一栏。该对象中有另一个对象(条形xyz)。我希望能够在当前Foo中更改此栏(它是一个域对象)。但是当页面加载时,Foo中可能已经有一个条
如何将选择绑定到预填充的子对象?select包含子对象的可能值(当前所有可用的条),但绑定不起作用
我在将grailsApplication注入到Grails2.1中创建的服务中时遇到了一个问题。我已经构建了一个简单的测试应用程序(希望我能够解决这个问题,然后将补丁移植到我的实际应用程序中),它由一个控制器、视图和服务组成
控制器如下所示:
class IncidentController {
static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
def incidentService
我一直在使用SpringSecurity用户界面和SpringSecurity插件。我们有我们的register.gsp页面,它按预期工作。我们正在将css移动到twitter引导,因此我们更改了register.gsp文件,以符合我们的要求
所以我们改变了:
<s2ui:textFieldRow name='username' labelCode='user.username.label' bean="${command}"
size='
我正在使用构建在Grails之上的(某种)框架。该框架是一组Grails插件,用于向Grails应用程序添加功能(例如用户身份验证)。这个框架的设置有点麻烦,因为它需要在应用程序的Config.groovy文件中进行大约64行特定于站点的配置
我想将我的插件作为插件开发到此应用程序。也就是说,Grails应用程序实际上只是一组已安装的插件和一些配置文件
我已经创建了一个本地Maven风格的存储库来保存我的所有插件。因此,我可以将插件依赖项添加到BuildConfig.groovy文件中,它们将自
对于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
gormgrails-domain-class
情况是这样的:用户表包含的数据与其他用户的数据(如国家、年龄组、性别等)重叠
在MySQL中,我会使用三个或两个表。在存储country的情况下,我将使用三个表:一个是user表,另一个是country表,最后一个连接这两个表。(当然,如果一个用户有一个国家,我可以使用两个表。)
ex)用户(id,otherUserInfo),
用户国家(id_用户,id_国家),
国家(id,countryName)
作为Grails的新手,我想知道表示此模式的最佳方式是什么。是否需要创建2-3个域类?或者是
我不想保存一个编辑过的域类,而是想用我所做的更改创建它的一个新实例
def update =
{
def VariantInstance = Variant.get(params.id)
VariantInstance.properties = params
def NewVariantInstance = new Variant()
//Now Assign Variant Instance new Values
我想在main.gsp模板的所有页面中包含application.js,但出于某些原因,application.js只包含在少数页面中
这是我的配置:
应用程序资源.groovy:
modules = {
application {
resource url: 'css/common.css'
resource url: 'js/application.js'
resource url: 'js/bootbox.min.js'
}
我有一个命令对象,如下所示:
class TestCreationCommand {
String title
List testItems = [].withLazyDefault {new VocabQuestion()}
static constraints = {
title(blank:false,maxLength:150)
testItems( validator: { ti ->
假设我们有一张像这样的地图:
def mostBeautifulCities =
[
cadiz : "Cádiz",
KeyForCity2 : "some value for city2"
]
我们如何列出所有的值呢?(我没有找到一个简单的方法来查看这些值)
我想在选择控件中显示所有值:
<g:select id="city" name="city"
from="${ mostBeautifulCities.(...) }"
noSelecti
我使用插件jaxrs创建了RESTAPI(),并用实现了Oauth 2
现在我想保护由插件jaxrs创建的资源。你对我有什么建议吗
谢谢
Long Do我认为您应该在rest控制器或方法中使用spring security提供的注释@securied
import grails.plugins.springsecurity.Secured
@Secured(['YOUR_ROLE'])
资源位于grails应用程序/资源中,而不是控制器中。我使用了@Secured,但它不起作用。现在我用过滤
使用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
当我遇到错误时,我必须重定向到名为step2的控制器操作
这是控制器
def step2(Example exampleInstance) {
some code
}
这就是我发现错误的地方
if (errorProp) {
redirect(????)
return
}
如何重定向到控制器并同时传递exampleInstance?
我尝试了t(uri:“/spot/step2”),但未能将exampleInstance传递到step
我正在运行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插件。
当我打包它时,我看到生成了pom.xml和plugin.xml。其中,groupId和artifactId分别是org.grails.plugins和plugin-config
我想指定这些应该是什么,以便我的插件最终在artifactory中的正确位置
我该怎么做
谢谢。发布插件的工作是为插件设置默认的groupId。对于所有grails插件,它都是org.grails.plugins
您可以通过在插件描述符中设置属性来修改groupId:
class Pl
我正在尝试运行应用程序我的项目,其他战争/战争也在运行。例如,我们有一个war/ear,它有我想要访问的遗留web服务。我的目标是使用我的跑步应用程序部署现有的WAR/EAR。我可以分别部署两者,因为grails在端口8081上运行应用程序,jboss在端口8080上运行应用程序。问题是,当我尝试执行ajax POST、DELETE或PUT时,我遇到了一个跨域错误,因为每个应用程序都有自己的端口。有没有一种方法可以使用runapp使我的grails项目位于localhost:8080/grail
我正在尝试编写一个函数,它需要请求.getHeader('X-File-Size')返回一个长字符串。所以我试着这样写测试:
given:
MockHttpServletRequest request = new MockHttpServletRequest()
request.getHeader('X-File-Size') >> 2L
when:
controller.handle()
then:
1 * serviceMock.upload(_ as Lon
我在应用程序中使用默认的gdatepicker。结束日期默认为当前日期,可以正常工作,但是我不确定将开始日期日期选择器设置为前一年的7月的语法。似乎这应该是相当容易的,但我还没有找到一个好的例子。谢谢 如果我理解正确,则要求将去年7月设置为默认日期。如果是,那么您可以使用如下内容,但我建议将日期逻辑移动到控制器,然后填充一个模型以包含去年的7月日期:
<g:datePicker name="myDate"
default="${new java.util.Gr
我有两个域对象:
户主和地址
在HeadOfHousehold,我有以下关系:
Address currentAddress
Address previousAddress
我的地址如下:
static belongsTo = [headOfHousehold: HeadOfHousehold]
我有以下疑问:
def customers = HeadOfHousehold.findAll {
if(params.lastName){
我正在grails中做一个示例应用程序,我创建了一个赞助商域类,然后生成了相应的控制器
class SponsorController
{
...
def更新(长id,长版本){
当我生成一个控制器时,它生成了列表、显示、保存、创建、编辑和更新方法。我理解所有方法代码,但我对更新的方法代码有点困惑,其中包含两个参数id和版本,所以我的问题是这里的版本是什么,在这里使用版本的目的是什么默认情况下添加到每个域类中,并用于实现。
用户A检索域类的实例
用户B检索域类的实例
用户A更新实例
用户B更
现在,我正在开发Grails插件,以简化AmazonPaAPI在Grails应用程序中的使用
这个插件的目标是提供方便的TagLib来执行AmazonPaAPI操作,如下所示
<paapi:img idType="ISBN" itemId="4048668161" relationshipType="AuthorityTitle" size="medium" alt="alttext" />
代码失败
我得到了低于预期的结果。它已经输入了resp.txt
<!DOCTYPE
我想从“视图”文件夹而不是gsp加载现有文件。例如:
grails-app/views/test.txt
如何将其作为文件加载并作为内容提供给浏览器
谢谢您可以使用groovyPageResourceLoader来解析此资源。下面是一个非常简单的例子:
package example
class MyController {
def groovyPageResourceLoader
def index() {
def resource = groovyPa
标签: Grails
grails-plugingrails-2.0
我创建了一个插件,负责RDBMS对辅助数据源的访问,通过这种方式,我们对将要使用它的应用程序隐藏域和服务层(这会阻止他们修改该源)。我将插件发布到artifactory,然后将其成功导入到我的应用程序中。但是,插件使用的数据源文件被从打包中排除,当调用插件中的服务方法时,它试图对我的默认数据源执行这些查询
有没有办法告诉grails插件不要使用默认数据源,而是使用辅助数据源?或者有没有办法让插件不排除自己的DataSource.groovy文件
谢谢
更新
下面提供的答案是可行的,基本上这就是G
我在grails app/services目录下移动了一个类,以便注入springSecurityService。这个类是SpringUserDetailsService类的实现(这是正确的术语吗?)。以下是我在resources.groovy中的声明:
userDetailsService(com.company.product.PracticeUserDetailsService) {
grailsApplication = ref('grailsApplication')
}
此
我看过几篇文章(比如)指出Grails使用自己的GoogleGuice版本——一个难以捉摸的“3.1.0”版本
然而:
我看到没有3.1.0 Guice JAR发布到Maven/Grails Central;及
当我执行grails依赖项报告时在输出中的任何地方都看不到“guice”
所以我问:Grails有自己的Guice版本是真的吗?如果是,它在哪里发布,为什么在运行grails依赖关系报告时看不到它??
我这样问是因为GRAILS-11503中发布的解决方案(将exclude子句添加到
我将(0.17)用于Spring Security(2.0-RC5)
我已经包括了那里要求的所有内容,并按照示例创建了我的服务,以获取登录用户数据(来自Facebook)。
在(我已经完全复制到我的应用程序中)中有一个“FacebookUser create()”函数。
在连接Facebook并重定向回我的应用程序(打开stac)后,我得到:
代码行是
Facebook=newfacebook模板(token.accessToken.accessToken)
创建对象时引发错误。
如果您能告诉我
我最近开始研究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
asset-pipelinegrails-plugin
我使用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
当我尝试访问我的应用程序的登录页面时,我得到了以下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
我正在使用swaggydoc为我的grails应用程序以及Spring Security提供一个自动化的API站点。我正在使用GrailsREST控制器以及Grails3.2.1、SpringSecurity3.0.3和SwaggyDoc3.0.2
问题是,当我启用了spring安全性时,对于我试图公开的其他控制器,在swaggy页面上会出现403。我试着做了一些不同的安全配置,看看我是否可以让它工作,如果我有所有的控制器登录验证它的工作,但这不是我想要的我希望面向公众的REST端点是令牌身份验
我正在使用Grails作为API
在一个过滤器上,我在请求到达控制器之前定义了一些检查,如果这些检查没有通过,应该返回一个错误
错误发生在XML或JSON格式上,具体取决于内容协商。所以我尝试使用withFormat来呈现过滤器中的错误,但是过滤器不像控制器那样使用withFormat
有没有办法在过滤器上获得内容协商
与此同时,我从Accept标头中进行了自己的格式猜测,但我希望在过滤器中使用Grails with format。我认为您不能
但是,筛选器只支持可用于的方法的子集
控制器和标记
我有一个Grails3REST应用程序,可以调用它来保存上传的文件
def saveAll() {
request.fileNames.each { filename ->
if(!filename.empty){
File file = params[filename];
file.transferTo(grailsApplication.config.filesPath)
}
}
}
问题
我正在尝试将删除按钮添加到我的编辑表单中,但未找到任何有效的按钮。当我发现remoteLink可以帮助我时,我尝试了此操作,但将其添加到任何表单/应用时,我始终会得到:
标记[remoteLink]不存在
我正在使用Grails-3.2.4。
也许我需要导入一些东西或..?在Grails 3.x中,remote*标记被弃用并删除。您应该使用javascript库进行AJAX调用。。如果有更好的文档记录,我会节省一些时间。然而,我最终在一个较旧的grails文档中找到了它,但在搜索丢失的tagli
im使用Grails2.4.5
我想根据他们的合同数量检索前三名客户
我正在尝试执行这个代码
def customers = Customer.executeQuery("Select cu, (Select count(*) from Contract co where co = cu.contract) from Customer cu",
[max: 3])
它返回这个错误
二进制逻辑运算符的左侧和右
我的应用程序是基于Grails和MySQL构建的。我们最近将DB切换到了MariaDB,我知道它完全符合MySQL。我现在正试图在我的Grails应用程序中添加一个新的域对象。表创建失败,出现以下错误
您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解在第1行“type=InnoDB”附近使用的正确语法
Grails在语句末尾创建类型为INNODB的表。我发现用ENGINE=InnoDB代替TYPE=InnoDB解决了这个问题。我在DB上手动运行了CREATETABLE
标签: Grails
relational-databaserelationship
假设我有两个域对象,如下所示
class Author {
static hasMany = [books: Book]
String name
}
class Book {
String title
static belongsTo=[author:Author]
}
如果我想创建一本书,我必须先创建一位作者,如果我想创建一位作者,我需要创建一些书。因此,我是否必须同时创建一本书籍和作者?一位作者不需要任何书籍。首先创建作者hasMany是一种0:N(零对N
我的要求是每次访问映射中的值时都获得一个新实例
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