grails - Grails命令对象和输入名称值

标签 grails groovy command-objects

我有一个表格,其中我必须对输入元素进行专门排序。所以我的表单看起来像这样:

<input type="text" name="name"/>
<select name="contacts.first">...</select>
<select name="contacts.second">...</select>
...

我有一个尝试用来验证此表单的命令对象。但是,我似乎无法正确映射它。我的命令对象如下所示:
@Validatable
class MyCommand {
     def name
     def contacts

     static constraints = { /* ... */ }
}

我的 Controller Action 如下所示:
def update = { MyCommand cmd -> 
    if (cmd.validate()) {
         /* ... */
    }
}

当我查看cmd.contacts时,它为null。如果我为每个名称都选择仅选择contacts而不是contacts.first,则它是期望的值数组,但是我不想依靠浏览器来确保这些项目按特定顺序排列。对这项工作有什么建议吗?正确的顺序至关重要。

最佳答案

最初的想法:http://stateyourbizness.blogspot.com/2009/02/binding-to-collection-fields-on-command.html

因此,对于您的命令对象,您可以使用:

import org.apache.commons.collections.FactoryUtils;
import org.apache.commons.collections.ListUtils;

class MyCommand {
    def name
    List contacts = ListUtils.lazyList([], FactoryUtils.constantFactory(''))
    /* ... */
}

并让您的html看起来像:
<input type="text" name="name"/>
<select name="contacts[0]">...</select>
<select name="contacts[1]">...</select>

关于grails - Grails命令对象和输入名称值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7098183/

相关文章:

validation - 扩展Grails命令对象约束验证

grails - chalice 应用程序启动时如何避免 quartz 启动

spring - 将 portlet 与 grails 应用程序上下文连接起来,还是通过 grails 部署多个 portlet?

oracle - 需要帮助使用 Oracle JDBC 瘦客户端加密配置 Grails

java - 无法获取在 Jenkins 中发送电子邮件的罪魁祸首列表

groovy - JMeter 断言结果

jenkins - 在Jenkins中调试Groovy脚本化管道

grails - Grails命令对象是否支持多个MultipartFile?

json - 在过滤器中访问 request.JSON 后 Grails 2.5.0 Controller 命令对象绑定(bind)

grails - 使用grails插件数据源