grails - 使用三元运算符的Grails hasErrors方法?

标签 grails groovy ternary-operator gsp

我正在使用Grails框架开发应用程序,当从gsp View 作为方法调用时,hasErrors存在问题。

我有一个表单,该表单由数据库中的值(默认值)填充。这些值存储在 session 对象中。用户可以在表单字段中编辑值,然后将结果发送回数据库。在数据持久化之前,我有一个用于验证数据的命令对象。如果存在错误,命令对象将以相同的形式渲染 View 并突出显示错误。

我想做的是使表单字段由存储在 session 对象中的值填充,除非命令对象出错。在这种情况下,应使用用户输入的错误值填充字段。

这是代码片段:

<g:textField name="somename" id="someid" value="${hasErrors(bean: commandobject, field: 'somename') ? fieldValue(bean: commandobject, field: 'somename') : session.somevalue}" />

上面的代码存在的问题是,无论在字段中输入的值是对还是错,字段总是以 session 对象中的值结尾。有解决方案吗?还是我一开始做错了什么?

最佳答案

当您像这样调用hasErrors时,您正在调用的 <g:hasErrors/> 标签没有返回 bool(boolean) 值-它查看条件并有条件地调用标签正文。在该描述下,为什么它的行为方式是合理的。

我建议您创建自己的TagLib并在您的条件下使用commandobject.errors.hasFieldErrors('somename') [docs](以获得所需的 bool(boolean) 值)。

关于grails - 使用三元运算符的Grails hasErrors方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7955589/

相关文章:

caching - Grails - 如何以 grails.gorm.DetachedCriteria 作为参数缓存服务方法?

在 gorm/groovy 上使用 mongodb 启动时出现 springboot 初始化错误

javascript - 这两者是否相同,或者其中一个比另一个更好/更安全?

javascript - 嵌套三元运算符可接受的格式是什么?

postgresql - 将postgreSQL integer []数据类型映射到Grails

grails - 将 groovy sql 的 sql.eachRow() 存储到列表中

grails - 双向在哪里? grails 一对一,双向测试(继续)

grails - 如何在Grails中模拟域名但由其父级获取?

file - 如何在 Groovy 中抓取一行的一部分

c# - C# 中的三元运算符