问题标签 [grails-validation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1355 浏览

mysql - Grails:我可以让验证器仅适用于创建(不更新/编辑)

我有一个域类,它需要在它的一个字段中创建它的那一天之后有一个日期。

所以几天后,当我只更改字符串并调用 save 时,保存失败,因为验证器正在重新检查日期,现在它已经过去了。我可以将验证器设置为仅在创建时触发,还是可以通过某种方式更改它以检测我们是否正在创建或编辑/更新?

@Rob H我不完全确定如何使用您的答案。我有以下代码导致此错误:

0 投票
2 回答
209 浏览

grails - 如何在 grails 中使用 XML 用户文件实现身份验证?

作为 grails 的新手,我想了解如何使用 XML 用户文件对用户进行身份验证?例如:只有当凭据(用户名和密码)与 XML 文件中的凭据匹配时,用户才能登录。谁能帮忙举个简单的例子。我基本上想知道要编写或需要修改哪些附加类。请指导!!!

0 投票
1 回答
470 浏览

grails - Grails:通过服务中的数据绑定完成的回滚关联

给定以下两个域类:

我们在服务中创建和持久化领域对象,并利用 Grails 的数据绑定特性。这种方法如下所示:

当我们通过params地图时

到服务方法(没有定义标题,因此验证将失败)从新创建的书到已经存在的作者(反之亦然)的关联是通过数据绑定完成的。但是由于标题是nullable: false而不是定义的ValidationException,所以抛出了一个事务并且回滚了事务。

我们现在期望的是这本书没有被保存,而是Book.list().isEmpty()返回 false。我们认为这是因为 hibernate 的脏检查,这意味着books现有的集合author已经改变并且将被持久化并且这个保存被级联到 book 实例。

在这种情况下,防止 grails 保存这本书的最佳方法是什么?或者为什么验证失败时数据绑定完成的关联没有正确回滚?

0 投票
1 回答
152 浏览

grails - 交换属性值后 Grails 唯一测试失败

您好我正在尝试实现一个简单的翻译列表,这意味着我有一个值和对这个值的翻译。

[编辑:] 由于这是我的用户界面的一部分,并且值和翻译可以通过 xml 导出,因此使用 i18n 文件接缝对于这个提议非常不方便。这就是为什么我决定将它们存储在数据库中。

我有一个值域类:

一个用于具有唯一约束的翻译,以确保对于一个值,特定语言不能有多个翻译:

我的问题是在为相同的值交换两种翻译语言后发生的。例子:

打印出来

所以在更新之前和之后都没有违反唯一约束,但无论如何我在保存时遇到唯一约束失败。另一个奇怪的事情是,当我对值执行 each() 循环时,我只会收到此错误。如果我不检查内容,则验证通过并且 save(flush:true) 方法返回 true,但数据库中的值不会更改。

[编辑:] 我相信问题出在数据库级别,当只有一个值被更改而另一个没有被更改时,因为正是在该状态下违反了约束。如果更改将作为事务执行,并且在此中间步骤期间不会检查约束,则可以避免这种情况。(这可能是我正在寻找的东西)

避免这种情况的另一种方法是删除并重新创建每个已编辑的 bean,但我希望可能有更方便的方法来做到这一点。

谢谢你的帮助

0 投票
1 回答
484 浏览

grails - 交换唯一属性值后 Grails 验证失败

交换唯一属性值后 Grails 验证失败

嗨,我正在尝试创建一个界面,用户可以在其中创建一些带有不同语言翻译的自定义枚举。例如,用户可以创建枚举“Movie Genre”。对于这个枚举,可能存在一个枚举值“喜剧”,其中可能存在一个或多个针对多种语言的枚举值翻译。

由于特定语言只能有一个翻译,因此我为枚举-值-翻译域类添加了一个唯一约束。这些是我现在的域类:

到目前为止,这工作得很好。当我以语言交换的方式更新相同枚举值的两个枚举值翻译时,就会出现我的问题。例如我有一个

  • 枚举值:“喜剧”

以及一些语言“意外”混淆的翻译

  • “喜剧”的翻译
    • 语言:德语,价值:“喜剧”
    • 语言:英语,值“Komödie”

如果用户认识到他混淆了语言,他可能想要交换语言并再次保存枚举。这就是我的错误发生的地方,因为在交换语言后,枚举值翻译唯一约束验证为假。

为了调试这个,我只是尝试在处理参数之前和之后打印出导致翻译的错误,所以:

结果:

在这种状态下,我还没有删除或保存(或以任何方式刷新)任何东西——这只是改变对象后的结果。正如您所看到的,实际数据中确实没有不一致,并且验证不应该失败。

我更改翻译的方式可能有错误吗?我只是通过 ID 获取它们并简单地更新了语言 - 我在一个简约的示例中尝试了它并且它在那里工作......如果我只是创建所有枚举值和枚举值翻译的深层副本并存储它也可以工作相反(这意味着验证真的不应该失败),但我认为这真的不是它应该做的方式......

另一个奇怪的事情是,只有在我遍历数据时验证才会失败。如果我根本不接触数据,则不会发生错误,但也不会保存数据,这意味着以下几行会导致对验证进行评估:

这就是为什么我坚信一定有一些不平凡的问题......请让我知道您是否需要知道其他任何事情。

谢谢你的帮助

0 投票
1 回答
1912 浏览

service - 来自服务方法的 Grails 验证错误

我在创建对象的服务类中有一个方法:

这些属性都不能为空。如何将验证错误传回以显示?我试过 flash.message 和 render,这两者都不能在服务类中工作。我还尝试了 .save(failOnError:true) ,它显示了一长串错误。

0 投票
1 回答
2076 浏览

grails - Grails 从域验证器获取会话变量

我确定这是一个常见的情况,但我还没有找到任何答案。我有一个包含当前登录用户的会话范围变量,我需要通过域对象中的自定义验证器执行条件验证。有没有办法在验证器中从会话范围获取当前用户,或者是否有另一种方法可以做到这一点,请记住我希望能够从验证器返回特定字段的错误(例如if(isBlank(it))return ['blank','summary',Presentation];)

基本结构:

0 投票
2 回答
3773 浏览

grails - 跨重定向呈现命令验证错误

我无法从我的命令对象中呈现错误。它做得很好,但我的 .gsp 视图没有呈现我提出的错误。

这是我的控制器操作:

以下是我尝试在 .gsp 视图中呈现错误的方法:

如何让错误显示在视图中?

0 投票
1 回答
85 浏览

grails - 在选项卡中,我有两个域

我是grails的新手,所以我很抱歉问这样的问题。

我有 3 节课,

Persona延伸到personaFisicapersonaJuridica

我在以下目录中创建了一个带有选项卡和两个提交按钮的 GSP

我想知道的是如何根据用户填写字段的选项卡保存一个或另一个域。

0 投票
1 回答
795 浏览

grails - 将参数传递给 Grails 自定义验证器

http://www.grails.org/doc/latest/ref/Constraints/validator.html

我有一个项目,我希望用户使用我通过 SMS 消息提供的临时密码登录。因此,在登录时,我想使用自定义验证器来检查我使用 Java 类创建的密码。