首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

修改并验证grails域对象而不保存它

修改并验证 Grails 域对象而不保存它,可以通过以下步骤实现:

  1. 在 Grails 域对象中添加验证规则。例如,如果您有一个名为 Person 的域对象,您可以在 Person 类中添加验证规则:
代码语言:groovy
复制
class Person {
    String name
    Integer age

    static constraints = {
        name blank: false, maxSize: 50
        age min: 0, max: 120
    }
}
  1. 在控制器中使用 validate() 方法来验证域对象。validate() 方法会返回一个布尔值,指示域对象是否通过验证。例如,在 PersonController 中:
代码语言:groovy
复制
def update(Long id, Long version) {
    def personInstance = Person.get(id)
    if (!personInstance) {
        flash.message = "Person not found with id $id"
        redirect action: 'list'
        return
    }

    if (version != null) {
        if (personInstance.version > version) {
            personInstance.errors.rejectValue('version', 'person.optimistic.locking.failure',
                    [message(code: 'person.optimistic.locking.failure', default: "Another user has updated this Person while you were editing")] as Object[],
                    "Another user has updated this Person while you were editing")
            render view: 'edit', model: [personInstance: personInstance]
            return
        }
    }

    personInstance.properties = params

    if (!personInstance.validate()) {
        render view: 'edit', model: [personInstance: personInstance]
        return
    }

    personInstance.save flush: true

    flash.message = "Person updated successfully"
    redirect action: 'show', id: personInstance.id
}

在上述示例中,personInstance.validate() 会验证 Person 域对象的属性,并在不满足验证规则的情况下返回 false。如果验证失败,将重新显示编辑视图,而不会将更改保存到数据库中。

  1. 在视图中显示验证错误。在 edit.gsp 视图中,您可以使用 <g:hasErrors> 标签来显示验证错误。例如:
代码语言:html
复制
<g:hasErrors bean="${personInstance}">
    <div class="alert alert-danger">
        <g:renderErrors bean="${personInstance}" as="list" />
    </div>
</g:hasErrors>

这将在验证失败时显示错误消息,指示用户更正输入。

通过以上步骤,您可以修改并验证 Grails 域对象,而不保存它。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Grails——赋能敏捷开发的利器

一个偶然的机会,我接触到了Grails,通过几个小时就能构建一个专业的涵盖前、后端的Web应用,于是我尝试着开发那个订餐网站,结果,我利用几个周末仅用了半个人/月的功夫就做好了一个能上线接单具备后台管理...但你完全不用懂这些东西,Grails已经帮你封装好,你只需要通过的框架命令就可以轻松搭建你需要的应用。...虽然我是做Web应用出身的,但当年的我已经“退出江湖”多年,对于很多的新的技术和框架已经脱节,通过Grails,我可以在不需要懂这些技术和框架的情况下就运用到它们。...也正因为通过Grails开发起步快,特别适合需要快速试错的初创企业,据说Linked-in最初的版本就是用Grails开发的。...我相信Spring Boot吸收了不少Grails的思想,实现了开箱即用,现在新版Grails反过来把Spring Boot作为底层框架之一进行了重构。

1.9K50

Groovy、热部署和热加载(自定义类加载器)及spring loaded 部分源码分析

优点:不需要重启tomcat服务器,如果一个tomcat多个项目,不必因为tomcat停止停止其他的项目。 缺点:会清空运行期间产生的数据内存。...释放内存,比如修改类了,原先的类内存不会释放,新的类还会增加内存,同样不重启tomcat。 热加载和热部署的联系 1.不重启服务器。 2.基于Java类加载器实现。...的内部类 Watcher 实现 runnable 接口,的run 方法 有一个 while(!...1、devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的。...网上的一些回答 除了从本地或是网上加载类文件,还可以用类加载器来: 在执行不受信任的代码之前自动验证数字签名 使用用户提供的密码透明的解密代码 根据用户的特定需求创建自定义的动态类 额外拓展Grails

3.2K00
  • Groovy on Grails 交流活动

    Groovy on Grails 一些文章的翻译: 10 个对于 Grails 的误解 通常情况下所谓 “新” 的东西出现总是会伴随着许许多多的流言与困惑,Grails例外,许多人也许会因为这个放弃继续使用它...“Grails 需要特有的运行环境。” !你只需要使用 “grails war” 命令将应用打包成一个 WAR 文件,并将其部署到你最喜欢的应用程序容器中即可。...带来了强有力的语言特性,比如闭包,动态载入,还有 Java 平台的元类型对象。在这一切过程中,你的 Java 技能却永不过时,因为 Groovy 正是建立在对 Java 平台的体验与熟知的基础上的。...另一方面,Groovy 创造的目的也正是为了在遵循 Java 对象模型和顺从 Java 程序员惯性思维的基础上扩展该语言的能力。 第一章将带你领略 Groovy 的背景并且为你准备一下必要的知识。...一切都是从这个 Groovy 的故事开始的:为什么要创造 Groovy,的设计是怎样的,它在语言大家族里面又处于怎样的地位呢?

    1.7K20

    Flash Scope

    其实在 Rails/Grails 里面就已经包含了一个机制,它将对象短暂地放置在 session 中,request-response 连续的两个环节后再清除掉这个短暂保存对象,就叫是 Flash Scope...的原理很简单,内部定义了两个 Map,将保存在里面的数据,在两个 Map 里面来回转移,这样就保证在下一次请求到来时,只需要将其中一个 Map 的数据转移到另外一个 Map 中,清除掉一个 Map。...这样就保证一次在重定向时,该作用下依然保存数据。而在第二次的请求时,如果没有新的数据加进来,原来的数据将会被清空。...(2)上面的做法解决了对象在对个环节中传递的问题,那么,怎样解决在同个用户并行地操作两个流程时,会互相影响到的问题?...我画一个简单的时序图来说明: 文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性注明来源链接 《四火的唠叨》 ×Scan to share with WeChat

    1.8K10

    《Spring Boot极简教程》第8章 Spring Boot集成Groovy,Grails开发第8章 Spring Boot集成Groovy,Grails开发小结参考资料

    [2] Groovy 不会替代 Java 语言 — 只是提供了增强。您可以很快地掌握 Groovy,因为说到底,Groovy 代码就是 Java 代码。...Grails简介 Grails是一套用于快速Web应用开发的开源框架,基于Groovy编程语言,构建于Spring、Hibernate等开源框架之上,是一个高生产力一站式框架。.../ 数据库的对象关系映射层使用GORM 我们使用 Grail 对象关系映射(Grails Object Relational Mapping,GORM)API 进行数据库层的持久化工作。...安装Grails 3 开发环境 浏览器访问 http://www.grails.org/Download,下载,解压,设置环境变量即可。具体步骤如下: 1.下载解压 grails.zip。...(The Software Development Kit Manager),可以直接命令行自动安装Grails最新稳定版本: $ sdk install grails 安装完毕,验证一下: $ grails

    2.4K30

    《Groovy极简教程》第1章 Groovy简介《Groovy极简教程》第1章 Groovy简介参考资料

    14、支持对对象进行布尔求值。 15、类不支持default作用,且默认作用为public。 16、groovy中基本类型也是对象,可以直接调用对象的方法。...Groovy 的松散的Java 语法允许省略分号和修改符。 除非另行指定,Groovy 的所有内容都为 public。 Groovy 允许定义简单脚本,同时无需定义正规的 class 对象。...Grails 一套用于快速Web应用开发的开源框架,基于Groovy编程语言,构建于Spring、Hibernate和其它标准Java框架之上,从而为大家带来一套能实现超高生产力的一站式框架。...闭包 闭包就是可以使用参数的代码片段,每个闭包会被编译成继承groovy.lang.Closure类的类,这个类有一个叫call方法,通过该方法可以传递参数调用这个闭包.它们可以访问修改在闭包创建的范围内的变量...,在闭包内创建的变量在闭包被调用的范围内同样可以被引用, 闭包可以保存在变量中被作为参数传递到方法中。

    1.3K20

    8.2 Spring Boot集成Groovy、Grails开发小结参考资料

    [2] Groovy 不会替代 Java 语言 — 只是提供了增强。您可以很快地掌握 Groovy,因为说到底,Groovy 代码就是 Java 代码。...Grails简介 Grails是一套用于快速Web应用开发的开源框架,基于Groovy编程语言,构建于Spring、Hibernate等开源框架之上,是一个高生产力一站式框架。.../ 数据库的对象关系映射层使用GORM 我们使用 Grail 对象关系映射(Grails Object Relational Mapping,GORM)API 进行数据库层的持久化工作。...安装Grails 3 开发环境 浏览器访问 http://www.grails.org/Download,下载,解压,设置环境变量即可。具体步骤如下: 1.下载解压 grails.zip。...(The Software Development Kit Manager),可以直接命令行自动安装Grails最新稳定版本: $ sdk install grails 安装完毕,验证一下: $ grails

    2.3K30

    简洁、高效、灵活:探索 Spring 同级别的编程框架

    Grails建立在这些概念之上,大大降低了在Java平台上构建Web应用程序的复杂性。然而,的不同之处在于,通过构建已经建立的Java技术(如Spring和Hibernate)来实现。...Grails开箱即用的内容包括: GORM :一个易于使用的对象映射库,支持SQL,MongoDB,Neo4j等。 可以查看呈现HTML和JSON的技术。...以上所有都通过Groovy语言的强大功能和领域特定语言(DSL)的广泛使用变得易于使用,Grails是构建在Springboot之上的,利用了Spring的功能,例如依赖注入。...Grails不仅仅是一个Web框架,由各种子项目组成。下表总结了生态系统中的其他一些关键项目。...角色模型和公共存储库,用于重用共享组件。 丰富的生态系统:Eclipse Vert.x 堆栈包含用于构建现代端到端反应式服务的模块。

    72650

    在你的浏览器中构建和共享开发人员环境

    一般工作流程可能如下所示: 拉一个项目>在本地IDE中进行更改>将更改推回到云>触发远程编译或运行 将你的桌面与云结合使用,不是代替你的桌面。...添加了附加源代码后,你可以执行grails命令,打包应用程序使用servlet容器部署工件(你可以下载Tomcat或使用我们的基本映像中最常用的servlet容器安装)。这很简单。...想象一下,你已经为你的Grails项目构建自定义的运行时系统,希望其他人使用它。针对这个问题来说,邀请别人到你的工作区不是一个解决办法,尤其是如果你并不认识他们中的任何一个。...用户可以将项目保存到持续的Codenvy帐户中,或者注册持续使用项目。好处是什么?好吧,通过发布这样一个Factory按钮,取代了编写关于“如何试用一个特定框架”的冗长指导和教程的工作。...如果你知道如何配置MongoDB,安装Leiningen,不需要经常查看他们的文档,那应该只需要1个小时。针对特定项目的环境,点击此按钮可以在其中找到自己的项目。

    4.5K90

    「首席架构看领域驱动设计」领域驱动的设计和开发最佳实践

    提高了业务对象的可重用性和可测试性。 另一方面,让我们看看当IT团队遵循用于开发大中型企业软件应用程序的模型方法时会发生什么。...投资模型和开发工作将导致应用程序体系结构“臃肿的服务层”和“贫血的模型”,其中facade类(通常是无状态会话bean)开始积累越来越多的业务逻辑,对象则变成只有getter和setter的数据载体...它不保存业务对象的状态,但可以保存应用程序任务进程的状态。 层:此层包含有关业务的信息。业务对象的状态保存在这里。业务对象的持久性及其状态可能被委托给基础结构层。...还可以对用户输入数据执行基本的(与业务无关的)验证,然后再将其传输到应用程序的其他(较低的)层。 包含任何业务或相关逻辑或数据访问逻辑。...Spring Dynamic Modules框架通过允许在应用程序中导出和导入任何类型的对象不需要修改任何代码,在这方面提供了帮助。 Spring DM还提供了在容器外运行OSGi集成测试的测试类。

    1.6K30

    在您的浏览器中构建和共享开发者环境

    一般工作流程可能如下所示: 拉取一个项目>在本地IDE中进行更改>将更改推送回云端>触发远程构建或运行 使用云搭配您的桌面,不是取代。...添加了添加源代码后,您可以执行grails命令,打包您的应用程序使用servlet容器部署开发(您可以下载Tomcat,或使用我们最受欢迎的预装servlet容器的基本镜像)。就是那么简单。...CMD并在Dockerfile中覆盖)。...想象一下,您已完成为您的Grails项目构建自定义运行时,希望其他人使用它。邀请别人到您的工作区在这里不是一个好的解决方案,尤其是当你并不认识他们的时候。比如,你想与您的博客受众分享。...原来的项目和工作空间依然不会受到影响,临时工作空间在几个小时内就被销毁了。用户可以将项目保存到其持有的Codenvy帐户中,或者注册跟进项目。好处是什么?

    1.8K70

    Rails框架流行在他的设计理念

    这两天看了一本书《Grails权威指南》,看了这个Java上Rails框架,其中有两条设计理念: 1、make simple thing easy and make complex possible...你要用这两个开发web框架,就一定要按他的方式做,model文件就放在models目录里,controller,view,helper分别放在特定名称的目录里,只要你按这个规则做了,那一切很简单,如果你较真抬杠非这么放...这样开发者就不用为了“可能”存在的灵活性维护一个大的OR Mapping配置了。这样简单的事情容易了。...他们的设计模式都是ActiveRecord,ActiveRecord做CRUD很简单,每个对象可以有自己的Fetch,FetchByxxx方法,从开发者的角度看这些对象,它们知道如何加载和保存自己,对象自己来维护...IsDirty之类的标识,开发者不必关心这个对象应该被insert还是update。

    2K50

    DevOps自动化组件-RUNDECK介绍、开发、部署、使用

    提供web界面和restapi来给用户使用,Web界面主要提供给非开发人员使用,如项目组的测试和运维人员,提供的丰富的api使得开发可以很容易的融合到DevOps平台体系中。...3.跨平台 rundeck提高跨多个工具,系统的效率,通过消除或跨越技术和组织流程结构部门。...保存新建项目的日志信息,生命周期数据等。存储项目节点资源模型缓存信息,等 tools:存放项目依赖的jar包,相关指令集 server:存储RunDeck配置信息(用户体系,数据库连接)。...1.修改默认的用户名密码:/server/config/realm.properties 2.修改数据库连接:/server/config/rundeck-config.properties,如 dataSource.url...=smtp.sina.com.cn   grails.mail.port=25   grails.mail.username=xxx grails.mail.password=xxx RunDeck的使用

    8.3K90

    2016 年 7 个最佳的 Java 框架

    如果你正在对高负载系统(如广播门户)愁眉展,那么这是一个正确的选择。 ? 由于Struts 2实现好了的Action类(普通POJO对象),测试编写代码所需的工作量减轻了。...IT工程师需要为多个操作创建重复设置的代码不再是一个问题,因为拦截器会处理。 然而,你可能会因为这个Java框架的庞大体型望而却步:一些程序员发现它不够灵活。...这种映射Java框架通过替换持久化的DB访问高级对象处理函数来破解对象关系阻抗匹配问题。...尽管Grails是一个全栈开发的Java框架,但它还有一个Grails对象关系映射覆盖的庞大功能,使其成为了一个相对笨重的软件。 那么选择什么呢?...通常,将开发交给远程团队获得可盈利产品是非常值得的。快乐开发!

    1.5K10

    2016 年 7 个最佳的 Java 框架

    如果你正在对高负载系统(如广播门户)愁眉展,那么这是一个正确的选择。 ? 由于Struts 2实现好了的Action类(普通POJO对象),测试编写代码所需的工作量减轻了。...IT工程师需要为多个操作创建重复设置的代码不再是一个问题,因为拦截器会处理。 然而,你可能会因为这个Java框架的庞大体型望而却步:一些程序员发现它不够灵活。...这种映射Java框架通过替换持久化的DB访问高级对象处理函数来破解对象关系阻抗匹配问题。...尽管Grails是一个全栈开发的Java框架,但它还有一个Grails对象关系映射覆盖的庞大功能,使其成为了一个相对笨重的软件。 那么选择什么呢?...通常,将开发交给远程团队获得可盈利产品是非常值得的。快乐开发!

    1.5K20

    JAVA常用框架及漏洞

    降低了业务对象替换的复杂性,提高了组件之间的解耦。 2. AOP(面向切面编程):通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。...ModelAndView handleRequest(request, response) 方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证...)框架,它对JDBC进行了轻量级的封装,使得JAVA开发人员可以使用面向对象的编程思想来操作数据库。...GWT 跨站脚本漏洞 Grails介绍: Grails是一套用于快速Web应用开发的开源框架,基于Groovy编程语言,构建于Spring、Hibernate等开源框架之上,是一个高生产力一站式框架...Grails数据绑定安全绕过漏洞 Play介绍: Play是一款开源、轻量、无状态、Web友好的架构,使用Java语言编写遵循MVC模式,集成了当今Web开发所需的组件和API。

    3.4K20

    Groovy 初学者指南

    下面是一些Groovy语法的关键要点: 动态类型 Groovy是一种动态类型语言,允许变量的类型在运行时进行推断和修改。这意味着你可以在声明变量类型的情况下直接使用它们,从而简化了代码的编写。...除了直接在Java代码中定义Groovy代码,我们还可以将Groovy代码保存在独立的脚本文件中,通过GroovyShell来执行该脚本。...通过实现CompilationCustomizer接口,我们可以在编译Groovy代码之前或之后对代码进行修改、添加额外的功能或验证。...通过使用CompilationCustomizer,我们可以在编译过程中自定义Groovy代码的行为,添加自定义的功能和验证。...Web开发框架 - Grails Grails是一个基于Groovy的全栈Web应用程序开发框架,建立在Spring Boot和Groovy语言之上。

    39430

    深入理解作用和闭包

    原始值 的变量是按值访问的,保存在栈内存里。...保存 引用值 的变量是按引用访问的,保存在堆内存里。 引用值就是保存在内存中的对象,JavaScript不允许直接访问内存位置,因此不能直接操作对象所在的内存空间。...引用值可以添加、修改、删除其属性和方法 原始值不能有属性与方法,只能修改其值本身 接下来,我们举个例子来验证下: let person = {}; person.name = "神奇的程序员"; console.log...运行结果如下: image-20210320222904217 上述例子中使用const声明的obj可以修改的属性,如果想让整个对象都不能修改,可以使用Object.freeze(),如下所示: const...变量如果处在全局上下文中,如果我们主动销毁,那么的生存周期则是永久的。 变量如果处在函数上下文中,它会随着函数调用的结束被销毁。

    53230

    1. 了解Groovy

    GrailsGrails是一个用于JVM的开源、全栈、web应用程序框架。利用Groovy编程语言和约定不是配置,提供了高效的、流式的开发体验。...(Android中依靠打包编译App) Spock:Spock是Java和Groovy应用程序的测试和规范框架。之所以能从人群中脱颖而出,是因为优美富有表现力的规范语言。...利用Groovy编程语言的巨大灵活性,并在经过验证的Java技术基础上构建,我们的目标是使多核硬件的并发编程变得直观、健壮和愉快。...受Grails的启发,Griffon遵循“配置之上的约定”范式,搭配直观的MVC架构和命令行界面。 Geb:Geb是一个功能强大的浏览器功能测试框架,可以让您快速轻松地在Groovy中编写功能测试。...汇集了WebDriver的强大功能、jQuery内容选择的优雅、页面对象建模的健壮性和Groovy语言的表达能力。 SDKMAN!:SDKMMAN!

    1.4K20

    创业公司技术选型原则

    他同时还是CSM和活跃的社区活动组织者,在西安组织过多场HiBlock区块链技术社区活动做分享。 作为技术人员,对于“技术选型”一词应该不太陌生。...在我看来,架构更多地落在方向层面,工具则着眼于执行层面的细节。既然如此,那么两者的选择顺序和差异就一目了然了:先定架构再选工具,架构的选择由场景决定。...作为我司的主要开发工具,不是市面上烂大街的SSH或SSM。...我个人喜欢通过引入好的工具来获得额外时间,即使显得稍微有点偏门,也无所谓。因为好的工具通常: 可以降低对于开发人员的要求,从而节约招人时间和缩短因人员流动引起的效率减缓时间。...在草创阶段,我们的接入层由以下几部分组成: Socket Server,负责在线设备连接管理,解析数据包、保存数据和报警等功能。

    2.1K20
    领券