首页
学习
活动
专区
工具
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应用,于是我尝试着开发那个订餐网站,结果,我利用几个周末仅用了半个人/月的功夫就做好了一个能上线接单并具备后台管理(含基本财务)的网站。刷新了我对软件开发的认知,原来开发一个复杂的含前、后端的Web应用也可以如此地快。 Grails是一个基于JVM的全栈快速Web应用开发框架,类似的框架有著名的Rails,但是它需要用Ruby语言,对于广大的Java开发者,要学习一门新语言显然不现实。于是有人基于Groovy做了Grails,可以理解为Grails = Rails on Groovy。Groovy是JVM三大衍生语言之一,相对于Closure和Scala,它可以视为是Java的简化版和脚本化,学习周期最短,上手只消半天,而且相对于有点老气的Java,动态语言Groovy编程要快速和灵活得多。所以Grails可以说是面向Java开发者的快速开发框架。

05
  • 领券