我正在使用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/