Grails“bean:input”(bean字段)显示错误的bean属性

时间:2012-03-05 08:16:55

标签: grails

由于我们已经更新为grails 2.0.1(从2.0.0开始),所有通过bean字段显示的bean都被错误地显示为“withBean”字段的第一个属性。在我发布的示例中,[firstName,lastName,dateOfBirth,contactNumber]显示为'firstName'(我们知道它不仅仅是错误的消息,因为否则第3个属性(dateOfBirth)将是一个日期选择器,而不仅仅是文本字段。)

任何潜在的解决方法或建议?

(plugins.bean场= 1.0-RC3)

Code

enter image description here

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并且有一个解决方法。

我已经将自定义的beanfield模板提取到一个名为/shared/_beanfieldConfig.gsp的gsp模板中,然后我在调用任何bean标签之前通过渲染将其包含在内。 e.g。

<g:render template="/shared/beanFieldConfig" />
<bean:withBean beanName='command'>
<bean:input property='username' />

这在1.3.7中运行良好,意味着我可以在视图之间共享beanFieldConfig。

升级到2.0.3时,我遇到了与原始问题相同的问题。我发现我可以通过在每个视图中内联_beanFieldConfig的内容来解决这个问题。

Yuk,但至少这意味着我不需要重写我的所有观点来使用替换插件(还)。

(编辑) 有趣的是,尽管渲染模板中的beanField配置不起作用,但将其粘贴在taglib DOES中。

所以,虽然之前我在beanFieldConfig

<bean:inputTemplate>
<div class='input ${errors ? 'errors' : '' }'>
    ${label}
    ${field}
    <g:if test="${errors}">
        ${errors}
    </g:if>
</div>
</bean:inputTemplate>

如果我定义等效标签 -

def beanFieldConfig = {
    bean.inputTemplate { m ->
        m.with {
        """ <div class='input ${errors ? 'errors' : '' }'>
    ${label}
    ${field}
    ${errors ?: ''}
</div>"""}
    }
}

然后在我的gsp中用<g:render template="/shared/beanFieldConfig" />替换<g:beanFieldConfig/>,它可以正常工作。