如何在Grails中实现错误处理?

显然,我只是从圣杯开始。我已经创建了我的域类和控制器,向控制器添加了我自己的逻辑,只要没有任何问题,一切都正常工作 我的自定义控制器操作如下所示: def create = { try { // Get the parameters. def uid=params["uid"] def pwd=params["pwd"] if (!uid || !pwd) { throw ne

如何重写addTo*和RemoveFrom*GORM/Grails方法?

我试图重写Grails/GORM提供的动态方法addTo*,但它似乎不起作用 代码如下: class Match { static hasMany = [players: Player, matchPlayers: MatchPlayer] void addToPlayers(Player player) { if (players.add(player)) { MatchPlayer matchPlayer = new MatchPla

Grails 什么是「;“Groovy”;及;“圣杯”;使用它们构建什么样的应用程序?

现在我听到很多关于“Grails上的Groovy”,我想知道更多关于它的信息: 什么是Groovy 什么是圣杯 在Grails上使用Groovy构建什么样的应用程序 Grails与Groovy直接类似,但使用Groovy运行。这是什么?它是一种在Java虚拟机(JVM)上运行的脚本语言 因此,您可以利用已经拥有或可用的Java库(因为它们被编译成字节码,因此在JVM上运行),再加上JVM的强大功能(用于垃圾收集、通过JIT编译的速度等)和Groovy的简洁性。Java程序员学习Groovy的过

Grails 使用Groovy将字符串或字符串[]转换为列表

我有一个多选变量发布到控制器。多重选择的工作方式是,如果只选择了一个值,则将其作为单个字符串传递;如果选择了多个值,则将其作为字符串[]传递。我希望保持处理简单,并以相同的方式处理传递的值。所以我能想到的最好的方法是将其转换为如下列表: def selectedValues = params.selectedValues List valuelist = new ArrayList() if(selectedValues instanceof String) { valuelist.

Grails删除和级联

我有以下三门课 class User { static hasMany = [coupons: Coupon] } class Coupon { static belongsTo = [affiliate: Affiliate] } class Affiliate { static hasMany = [coupons: Coupon] } 如何设置层叠,以便删除特定优惠券,并将其从“附属公司”和“用户”列表中删除。我不断收到“无法删除或更新父行” 我遗漏了什么吗?您需要从父集合中删

Grails 验证是否已从标记库中授权

如何从标记库验证“至少授予了一个角色” 因此,我想使用类似于: <sec:ifAnyGranted roles="ROLE_ADMIN,ROLE_SUPERVISOR"> 但是在我的TagLib的groovy文件中 我正在使用 提前谢谢 在标记库中使用以下代码: class MyTagLib { def springSecurityService // injected by Spring def myTag = { attrs, body -> def

Grails1.2.4:更改ProxySettings.groovy的位置

我想将我的整个grails工作目录从 c:\documents and settings\%username%\.grails 因此,我配置了一个BuildConfig.groovy文件,其中包含 grails.work.dir="workdir" 这将创建一个相对于项目文件夹的文件夹,一切都很好,除了此项目所需的文件“ProxySettings.groovy”仍然必须放在用户目录中。 我在很多网站上搜索了好几个小时,找到了一些有趣的设置,比如,但是找不到有用的东西 现在,文件“ProxyS

Grails控制器中的重用标准

通常,Grails生成的控制器列表方法中有以下最后一行: [userInstanceList: User.list(params), userInstanceTotal: User.count()] 如果我想用一个特定的标准来限制用户,它看起来像 [userInstanceList: User.list(params) { ilike('login', '%test%') }, userInstanceTotal: User.count() { ilike('login', '%

迭代Grails控制器模型

假设我有如下控制器操作: def someAction = { if (someCondition) { [foo: 1, bar: 2] } else { [foo2: 4, bar2: 6, baz2: 6] } } 在someAction.gsp中,我不知道模型的关键是什么。是否有某种方法可以在不知道键名称的情况下迭代模型的键和值?所有模型属性都可以在请求对象中使用。您可以像这样迭代此对象: <g:each var

grails findAll()方法

我使用的是findAll()SQL-like方法: MyDomainClass.findAll("firstname='George' and lastname='kuo' and username='kjlop'"), 但我有个问题: 当值以number开头时(例如,当age='2poj')会引发异常 我使用grails1.3.2和gormhbase 0.2.4插件,在我的域类字段中有Stringtype 以下是堆栈跟踪: 应为范围为“0”…“9”的令牌,但找到了“p” at org.gra

Grails 模拟域的特殊行为

嗨,我有下面的单元测试 class BookUnitSpec extends UnitSpec { def "Person_roleOf() is able to retrive the person role based on the ROLETYPE enum"(){ setup: "Mock the person object" mockDomain(Person); //if I move this line to 3 lines below ... //otherw

无法安装Grails2.0.0.RC1

我将grails升级到v2.0,将grails_home设置为新的grails位置,并更新了path变量, 在命令提示符下执行grails-version时,会出现如下错误 Invalid maximum heap size: -Xmx Could not create the Java virtual machine. 我尝试从Java、grails和env变量(Java_OPTS、grails_OPTS)中删除所有选项,但它仍然抛出这个错误 这是Grails2.0中的一个bug吗?您使用的

Grails:groovy子集合

具有以下域类: class Message{ } 要获取id大于偏移量的所有邮件,请执行以下操作: def offset = params.offset def messages = Message.list() def subMessages = messages.findAll({offset, it -> it.id > offset }.curry(offset)) 怎么了 Upd:我知道Message.list()可以作为Message.list(params

Grails 如果条件执行,即使它是假的? def findFdrsWithMaturityYear(年){ def fdrs=Fdr.findAll() def foundFdrs=new ArrayList() def成立年份 每个罗斯福{ foundYear=DateUtils.getYearFromDate(it.DurityDate) 如果(year.toString()==foundYear.toString()){//第7行 foundFdrs.add(it)//第8行 } } 返回键 }

上面是groovy代码。我正在用intellijidea 11调试它,当我到达第7行时,我发现即使条件为false,它也会转到第8行,但是foundFdrs列表不会随着它在列表中添加一个元素而增长。我在grails web应用程序中使用此代码,每次运行此web应用程序时,即使第7行的条件为true,也会得到空的foundFdr列表。我还通过创建一个grails集成测试来测试上述代码,测试成功通过,即我获得了一些元素的foundFdrs列表,但在我的grails应用程序中没有,问题在哪里?我假设问

Grails-从一个域对象复制到另一个域对象有很多关系?

在存档过程中,我将详细信息从现有域对象复制到该域的新实例。两个域对象都具有hasMany关系: static hasMany = [pets:Pet] 当我遇到以下情况时: def ownerOne = (logic to find owner) def ownerTwo = new Owner ****ownerTwo.pets = ownerOne.pets**** 我该怎么做那条星线?我厌倦了这个: Set<Pet> ownerTwoPets = new TreeSet&l

grailsweb流中的重定向

我对Grails web流中的重定向有疑问。 我处于视图状态,允许用户输入问题的答案。在两次错误的尝试中,我应该能够重新引导用户从不同的控制器查看页面。我的意思是 challengeQuestionOne{ onRender() { //Display question } on('next') {BuildQuestion command -> bind

grails spring安全插件登录后重定向

在grails中,我试图在用户登录到我的person控制器后引导用户。我试图在config.groovy中添加重定向,但它不起作用。它仍然会将我重定向回登录页面 下面是我的config.grooovySpring安全部分 // Added by the Spring Security Core plugin: grails.plugins.springsecurity.userLookup.userDomainClassName = 'grail4.User' grails.plugins.sp

Grails请求的资源(/Receipts/Receipts/index)不可用

我一直在尝试学习Grails,但是遇到了以下问题。我创建了四个域类(收据、项目、类别和所有者),并为每个域类创建了四个控制器(ReceiptsController、ItemsController、CategoriesController和OwnersController)。域和控制器分别位于com.receipts包中 在每个控制器中,我只有以下内容: package com.receipts class ReceiptsController { static scaffoldin

Grails 需要一个带有多个参数的groovy wslite POST示例吗

我需要做一个安全的职位,以参数用户名和密码。我试图将wslite插件与Grails结合使用,但我无法理解其语法。我已经检查了github的单元测试,但是没有一个能满足我的需要。也许我只是没能把这些点联系起来 不管怎样,有没有人在一篇文章中有多个参数的例子?谢谢 尝试以下示例发布您的请求 def client = new RESTClient("https://example.com/api/login") // for testing only! client.httpClient.sslTru

Grails在@Secured([…]中访问我的域用户

我使用的是spring安全性,我需要在控制器中获取用户域对象 如果我调用@Secured(['principal…'),我将返回类型为org.codehaus.groovy.grails.plugins.springsecurity.GrailsUser的对象。但是,我要寻找的是我在Config.groovy中定义的User域对象,如下所示: grails.plugins.springsecurity.userLookup.userDomainClassName = 'project.auth.

grails with spring security:手动注销选定用户

作为应用程序管理员,我希望能够注销任何用户,例如,在为所选用户设置标志“enabled=false”之后。在春季安检中可能吗 我应该补充一点,我的应用程序允许用户使用“记住我” 我正在使用: Grails2.2.1 插件spring安全核心1.2.7.3 设置spring安全核心(config.groovy): 有没有人有过类似的问题? 提前感谢:)将UserDetails.enabled标志设置为false将导致在用户的下一个安全请求中引发DisabledException。这可以将用户发送到

Grails 在groovy中包含Liferay.jars用于portlet开发

我们正在groovy中使用Portlet和liferay Portlet插件开发liferay Portlet。我们想找到当前登录用户的用户ID。为此,建议使用com.liferay.model.user类(通过搜索其他S.O.问题) 不幸的是,当我们尝试导入com.liferay.*(或com.liferay.model.user等)时,grails编译器无法解析“user”类。这很有意义,因为com.liferay文件夹不在grails/lib文件夹中。但是,我无法找到从何处获取这些.jar

Grails国际化与Ember.js和handlebar.js

我正在开发一个web应用程序,我需要一些关于如何解决以下国际化“问题”的建议 我使用grails2.2.0以及Ember.js和handlebar.js,而前端(通过JavaScript和前面提到的框架实现)位于它的项目中,带有Sass文件,用于设计Grunt.js,用于编译整个项目 在这个“前端项目”中,我创建了handlebar模板,我希望通过Grails按需交付,模板的全文通过服务器端(Grails)根据登录用户的区域设置进行国际化。因此,工作流程如下所示: 客户端(JS)->请求后端(G

如何获取grails应用程序的绝对路径

我希望用户能够下载我的web应用程序/images文件夹中的文件 我建立了一个这样的行动: def download () { def file = new File (params.filepath) if (file.exists()) { response.setContentType("application/octet-stream") response.setHeader("Content-disposition", "filenam

Grails Log4j DSL配置中的Log4j过滤器

有没有办法在配置中指定log4j过滤器?我需要在grailslog4j配置中定义类似的内容: <filter class="org.apache.log4j.filter.ExpressionFilter"> <param name="expression" value="EXCEPTION ~= com.company.BackendNotAvailableException" /> <param name="acceptOnMatch" valu

Groovy/Grails项目运行错误

我对grails有点陌生,但当我尝试运行我的项目时,它失败了,我得到了以下stacktrace: | Loading Grails 2.0.4 | Configuring classpath. | Environment set to development..... | Packaging Grails application.... | Compiling 1 source files.. | Compiling 1 source files..... | Running Grails ap

在grailsgsp中,如何转义GString表达式

我需要在包含字符序列${}(OpenLayers样式-属性替换语法)的GSP中编写一些javascript。不幸的是,这也是groovy gstring表达式的语法。如何对其进行转义,以便Grails不会将字符序列解释为gstring。我尝试了“\”,但没有成功。试试这个: alert("\$\{test\}"); 输出: ${test} 我通常的做法是 ${'${test}'} 或者 ${'$'}{test} 请注意,使用单引号而不是双引号-${“${test}}不起作用,因为内部的$

一对多和一对一grails 2.2.4

我想为学生写一份考试申请表。所以有两种类型的类问题包含许多答案和正确答案。所以我有一对多和一对一两种 class Question extends Entity { static hasOne = [ acceptedAnswer: Answer ] static hasMany = [ answers: Answer ] static mappedby = [ answers: 'parentQuestion' ] static constraint

带父级的Grails查询

如果我有四个这样的域类: class Branch { String name static hasMany = [users:Users] static mappedBy = [users:'branch'] static mapping = { id column: 'f_branch_id' name column: 'f_name' } }

Grails @TestFor和extends ControllerUnitTestCase之间的差异

我使用的是Grails2.2.4,而且相对较新。我试图对我的控制器进行单元测试,但我对书本和网络上的内容感到困惑。有时我看到人们这样编写控制器单元测试: @TestFor(MyController) @Mock([Domain1, Domain2]) class MyControllerUnitTests { void testOne() ... } 有时我看到: class MyControllerUnitTests extends ControllerUnitTestCase {

Groovy/Grails应用程序GORM中的排行榜样式查询

我在生产中有一个Grails应用程序,我们将在其中实现一个排行榜。假设用户正在玩石头剪刀,排行榜正在统计赢家、输家和平局。没关系,没问题。但是现在我们的用户群已经足够大了,一个人必须滚动,滚动,滚动才能找到他们在列表中的位置。我们想做的是在排行榜上显示前10名左右(这显示在iPhone btw上),然后显示用户名及其相对于其他人的排名,如下所示: 安德鲁 布鲁斯 查理 道格 3194你 我知道这可以通过查询完整的列表,然后计算位置来实现,但每次执行该操作似乎都很昂贵。我想到的另一种选择是从qu

Grails开发过程

我对grails很陌生。在过去,我使用jsf2.0创建了web应用程序。通常我用“手工”创建每个类。所以圣杯的脚手架对我来说非常方便 所以我的问题是: 您是否只创建域层,然后修改视图? 在grails2.3.4中,您的典型开发过程是什么 谢谢你的回答 现在,在您更加熟悉之前,这是生成控件和视图的一个很好的起点。我认为您需要更具体地了解您希望在脚手架之外使用控制器视图做什么 请看这里的一个验证类示例,您可以在控制器的底部构造并添加该类。这样您就可以进行自定义验证。手工制作的表格 看一看Sprin

Grails 维护不同geb规范之间的会话

我正在与grails+geb+spock合作。基本上,我正在为不同的流创建geb规范,例如,我有一个geb规范仅用于注册,在每个规范中,我使用注释@StepWise,这样我就可以在同一规范中维护测试之间的会话。但我的问题是,我需要维护不同规范之间的会话不同文件中的不同类。例如,注册规范运行,之后,我需要测试另一个流,其中我需要在上一个规范中创建的用户。我认为重复所有流来注册用户不是一个好的做法,而且对于不同的流,只在一个规范测试中包括也不是一个好的做法。有人知道是否有类似于@StepWise但规

Grails:当尝试对列表排序时,数据会更新

我一直面临这样一种情况:下面的代码块一直以一种奇怪的方式运行。在下面的代码片段中,当我尝试在taglib中对案例工作流的活动列表进行排序时,它会执行db更新,而不仅仅是对数据进行排序。它会更新工作流行的版本。 你能告诉我哪里缺什么吗? 如能迅速提供帮助,我们将不胜感激 标记库: class CaseFormTagLib { static namespace = 'caseform' def caseForm = { attr, body ->

Grails Intellij IDEA+;Groovy+;更好的静态验证?

我在Grails服务中有一个方法: void methodA(Car car) { } 同一类中的第二个方法调用此方法: void methodB() { methodA("A string") } 但是intellij甚至没有警告这种明显不正确的用法 我知道methodA可以被注入字符串签名,但有没有办法让Intellij起作用或期望更少的动态行为 使用Groovy静态编写代码,同时继续使用某种标志,这将是一件好事 如果你不得不在Java和Groovy之间做出如此彻底的选择,那

如何在grails中将并发执行属性配置为false

嗨,我是grails的新手,我正在使用quartz插件来调度作业。我计划每60秒执行一次作业,但实际上有时需要60秒以上的时间,因此在这种情况下,会启动一个或多个线程,并且第一个线程仍在运行,因此任何人都可以告诉我如何依次执行线程。使用时,只需将concurrent属性设置为false,即可避免并发执行一个或多个线程工作: class MyJob { static triggers = { ... } def concurrent = false def execu

运行时发生Grails错误

我已经安装了grails,正如他们在(*见下文)上所说的,在运行groovy应用程序时,我遇到了这样的错误: | Error Resolve error obtaining dependencies: Failed to resolve dependencies (Set log level to 'warn' in BuildConfig.groovy for more information): - org.grails.plugins:tomcat:2.4.1 有什么问题吗 我没有看

Grails authenticatedUser为null,但principle不为null

这里是Grails安全的新手。我正在浏览文档,并尝试了这个。 成功登录后,why is authenticated user为null,即使主体已填充。我还有别的事要做吗 class SecureController { @Secured(['ROLE_ADMIN']) def userInfo(){ if (isLoggedIn()){ //authenticatedUser is null though user is authenticated. r

Grails 禁用从从属到所有者的级联

在本例中,我遇到了从从属图书到库级联到所有者对象的保存问题 我有两个类似的域: Library { String name static hasMany = [ books: Book] } Book { static belongsTo = [ library: Library] } 我平静地接近它们 现在假设有两个库: id:1,名称:library1 id:2,姓名:library2 我有一本属于一号图书馆的书。我是这样理解的: GET /book/1 response:

Grails与commons-dbcp2连接池数据源

背景:我有两个项目 答:基于Spring的java项目 B:用于gui的Grails项目 我有两个相关的问题: 如何在grails项目中使用org.apache.commons.dbcp2.BasicDataSource而不是默认的ApacheTomcat数据源? org.apache.tomcat.jdbc.pool.DataSource有一个限制,它只允许一个initSql字符串。我想运行两个init sql语句[“SET SCHEMA”,“SET ROLE”],这在dbcp2中是可能的,因

Grails:文本文件的链接

在我的Grails应用程序中,我需要提供指向实际文本(*.txt)文件的链接。如果用户单击链接,他们应在浏览器中以明文形式查看文本文件: MyFiles.groovy controller: ========================== class MyFiles { def index() { render(view: "myfiles") } } myfiles.gsp: ============ <!DOCTYPE html> <

Grails:将对象传递到视图时清除错误

我正在检查我的用户是否在控制器中输入了两次相同的密码: if(params.password1 != "" || params.password2 != "") { // change password if(params.password1 != params.password2) { user.errors.rejectValue('password', 'noMatch') } user.password = params.password

Grails(2.4)中的测试资源放在哪里?

我正在开发一个需要处理某种数据有效负载的服务类。在我的自动化测试中,我添加了一些模拟数据来检查不同输入的服务行为。我需要将这些模拟数据提取到几个文件中,以便在其他测试中重用它们。在Grails(2.4)应用程序中,我应该把这样的文件放在哪里?按照惯例,大多数java项目都有“代码> SRC/Test/Reals,但GrARES似乎不考虑。p> 如果您正在编写单元测试,您可以将它们放在test/unit/resources下,如果您正在编写集成测试,您可以将它们放在test/integration

使用JMS和activeMq grails 3.0发送电子邮件

我正在尝试将我的项目从Grails2.1.1更新到Grails3.0.5 当我使用Grails2.1.1时 我像这样发送电子邮件 sendQueueJMSMessage("queue.sendEmailCC", [emailTo: emailTo, emailSubject: emailSubject, content: content]) 然后在resource.groovy中 jmsConnectionFactory(org.apache.activemq.ActiveMQConnecti

Grails GORM:可以加载有错误的域对象吗?

最近,我们有了一个新的要求,即在从数据库a la加载域对象后检查它们是否存在错误: DomainType domain = DomainType.get(longDomainTypeId) 我们现在必须在加载的域上添加错误检查: if(domain.hasErrors()) { //report any errors and return failed } 如果数据库约束与域约束相同(NOTNULL、VARCHAR length等),怎么可能出现加载错误?这是验证数据库连接是否仍然有

Grails嵌套g:each

我正在尝试循环浏览索引视图中的字段列表。假设我将以下内容传递给index.gsp: [SomeDomainList: SomeDomain.list(), fields: ['field1', 'field2', 'field3']] 然后在index.gsp中,我有: <g:each in="SomeDomainList" var="SomeDomainInstance"> <g:each in="fields" var="field"> &l

Grails GORM notIn子查询,别名为

我正在尝试在GORM中实现以下SQL查询: select au.* from App_user au inner join SEC_USER su on su.id=au.SEC_USER_ID where not su.id in ( select susr.SEC_USER_ID from SEC_USER_SEC_ROLE susr inner join SEC_ROLE sr on susr.SEC_ROLE_ID=sr.id where sr.auth