Grails-hasErrors三元算子法?

Grails-hasErrors三元算子法?,grails,groovy,ternary-operator,gsp,Grails,Groovy,Ternary Operator,Gsp,我正在使用Grails框架开发应用程序,当从gsp视图作为方法调用时,我遇到了hasErrors问题 我有一个表单,它由数据库中的值(默认值)填充。这些值存储在会话对象中。用户可以编辑表单字段中的值,并将结果发送回数据库。在数据持久化之前,我有一个验证数据的命令对象。如果有错误,命令对象将以相同的形式渲染视图,并高亮显示错误 我试图做的是让表单字段由存储在会话对象中的值填充,除非命令对象出现错误。在这种情况下,应使用用户输入的错误值填充字段 下面是代码片段: <g:textField na

我正在使用Grails框架开发应用程序,当从gsp视图作为方法调用时,我遇到了hasErrors问题

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

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

下面是代码片段:

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


上述代码的问题在于,无论字段中输入的值是对是错,字段始终以会话对象中的值结束。这个问题有解决方案吗?或者我一开始做错了什么吗?

当您调用
hasrerrors
时,您调用的标记不返回布尔值-它查看条件并有条件地调用标记体。在这种描述下,它的行为方式是有道理的


我建议您创建自己的
TagLib
,并在您的条件下使用
commandobject.errors.hasfielders('somename')
(以获取您要查找的布尔值)。在这种描述下,它的行为方式是有道理的


我建议您创建自己的
TagLib
,并在您的条件下使用
commandobject.errors.hasfielders('somename')
(以获取您要查找的布尔值)。

在GSP中作为方法调用的
hasrerrors
与作为标记的工作原理稍有不同。前者用于在div或span等中设置CSS类

e.g. <div class="prop ${hasErrors(bean:parent, field:'child.name', 'errors')}">

这也适用于

中的逻辑操作
hasrerrors
作为GSP中的方法调用的工作方式与作为标记的工作方式稍有不同。前者用于在div或span等中设置CSS类

e.g. <div class="prop ${hasErrors(bean:parent, field:'child.name', 'errors')}">
这也适用于