【问题标题】:How to change a f:field (textField) by a textArea using Grails Fields Plugin如何使用 Grails Fields Plugin 通过 textArea 更改 f:field (textField)
【发布时间】:2013-09-07 22:40:04
【问题描述】:

documentation changelog of the plugin,在1.1版本中,我们可以阅读:

Support `widget:'textarea'` constraint.

Grails 有一个 textArea 字段。这是grails documentation的例子:

<g:textArea name="myField" value="myValue" rows="5" cols="40"/>

但是,如果我们使用 Grails Fields 插件,并且我们有这样的代码:

<f:field  bean="popularExpressionsInstance" property="omg" />

我们如何将其转换为 textArea 以允许键入多行文本?

【问题讨论】:

    标签: grails grails-plugin


    【解决方案1】:

    在您的 popularExpressions 域类中,为 omg 添加以下约束

    static constraints = {
      ...
      omg widget: 'textarea'
    }
    

    注意:如果你需要控制textarea的样式,你需要将它包含在f:field标签的body中,例如

    <f:field  bean="popularExpressionsInstance" property="omg">
      <g:textArea name="omg" cols="40" rows="5" maxlength="40" value="some default text"/>
    </f:field>
    

    【讨论】:

    • 谢谢!但只需使用... &lt;textarea rows="5" cols="40"&gt;&lt;/textarea&gt; &lt;/f:field&gt;,该字段就变成了一个textArea。为什么要约束?
    • @chelder 如果您在约束中使用widget: 'textarea' 定义它,您就是在告诉Grails 您希望该属性如何在脚手架中呈现。如果您使用默认的脚手架,Grails 将为该属性生成一个文本区域。对于您的用例,可能没有必要。
    • 请将&lt;textarea... 更改为&lt;g:textArea name="omg" cols="40" rows="5" maxlength="40" value="some default text"/&gt;。如果不是,则表单提交的值始终为空。
    【解决方案2】:

    您可以直接在 GSP 中覆盖标签正文,如 @user2264997 所述,但使用 ${ property }${it.value} 变量:

    <f:field property="description" widget="textarea">
        <g:textArea name="${ property }" cols="40" rows="5"
            value="${it.value}" />
    </f:field>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多