2009-10-27 67 views
0

我在使用Grails项目,变量变量在Groovy

我的用户beanFields插件在那里我改变豆:inputTemplate成以下

<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有$$使用了$变量的值作为变量进行评估的名称变量。

希望我是清楚的足够多的..谢谢你的帮助。

回答

0

你不应该需要beanName前的$,它应该是在范围内。

<div class="prop ${hasErrors(bean:beanName,field:'username','errors')}" > 

另外,我认为beanFields已经通过errors变量提供了错误消息。

所以,你可以测试一下,看看是否错误,不代替NULL调用hasErrors的。

0

调查该问题。经过我找到了耶beanName获得通过的模板,我不需要在beanName前使用$ ...

但是,仍然当我使用hasErrors(豆:beanName,场:“用户名”,“错误”),这是行不通的。

但是,我能做到这一点

<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> 

即使这样,也没有工作,这取决于validate方法上域类 所以写这篇

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{ 
        UserSecurity.withTransaction { status -> 
          userProfile.photos*.save() 
          address?.save() 
          userProfile?.save() 
          userSecurity.password = userSecurity.password.encodeAsPassword() 
          userSecurity.confirmPassword = userSecurity.confirmPassword.encodeAsPassword() 
          userSecurity?.save() 
        } 
        flash.message = 'No Errors Registering User' 
        render(view:'index',model:[security:userSecurity,user:userProfile,address:address,photo:photo]) 
      } 

因为,& &失败,第一个假结果,以及其他验证方法无法得到执行。

所以他们改变这种

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{   ...    } 

每豆得到确认,以及各个领域的错误得到正确呈现。