Grails Groovy中的变量
我在一个使用Grails的项目中 我使用beanFields插件将bean:inputTemplate更改为以下内容Grails Groovy中的变量,grails,groovy,grails-plugin,Grails,Groovy,Grails Plugin,我在一个使用Grails的项目中 我使用beanFields插件将bean:inputTemplate更改为以下内容 <bean:inputTemplate> <div class="prop ${hasErrors(bean:$beanName,field:'$fieldId','errors')}">${label} <span class="value">${field} </span> <
<bean:inputTemplate>
<div class="prop ${hasErrors(bean:$beanName,field:'$fieldId','errors')}">${label}
<span class="value">${field}
</span>
</div>
</bean:inputTemplate>
如你所能,我正试图使用$beanName作为beanName。。这是因为beanFields将beanName和fieldId以及其他一些属性传递给inputTemplate标记
但是,问题是我不能那样做。。我真的很懒,不想把所有的时间都花在复制和粘贴同一个字段div上,并为此维护一个巨大的文件
因此,如果有人能在这种情况下提供帮助,我将非常感激
我想在${}代码块中引用一个变量,因为在PHP中有$$variable,它使用$variable的值作为要计算的变量的名称
希望我是清楚的。。谢谢你的帮助。这不是对你问题的直接回答,但是你看过bean fields插件吗
我认为它做了你想做的事情,而且你不应该在beanName前面需要$1,它应该在范围之内
<div class="prop ${hasErrors(bean:beanName,field:'username','errors')}" >
另外,我认为beanFields已经通过errors变量提供了错误消息
因此,您可以测试错误是否不为null,而不是调用hasErrors。在调查问题之后。。我发现yeah beanName被传递到模板,我不需要在beanName前面使用$ 但是,当我使用haserrosbeans:beanName,field:'username','errors'时,它仍然不起作用 但是,我可以这样做
<bean:inputTemplate>
<div class="prop">${label}
<span class="value">${field}
</span>
<g:if test="${errors}"><div class="errors"> ${errors} </div></g:if>
</div>
</bean:inputTemplate>
因为&&失败,第一个结果为False,其他验证方法不会执行
所以把它们改成这个
if ( ! (userSecurity.validate() & userProfile.validate() & address.validate() & photo.validate() ) ){
flash.message = ' Error registering user '
render(view:'index',model:[security:userSecurity,user:userProfile,address:address,photo:photo])
}else{ ... }
每个bean都得到验证,所有字段错误都得到正确呈现
if ( ! (userSecurity.validate() & userProfile.validate() & address.validate() & photo.validate() ) ){
flash.message = ' Error registering user '
render(view:'index',model:[security:userSecurity,user:userProfile,address:address,photo:photo])
}else{ ... }