将多个选定的下拉值保存到Grails中的单个列中

时间:2017-07-12 10:50:09

标签: grails groovy gorm

如何将多个选定的下拉列表值保存到Grails的单个列中? 输入看起来像

<g:select name="item1Price" from="${1..10}"/>
<g:select name="item2Price" from="${1..10}"/>
<g:select name="item3Price" from="${1..10}"/>

输出应存储在一个字段中

ItemPrice: 2,8,6

1 个答案:

答案 0 :(得分:0)

你的问题有点模糊,所以希望一个有点模糊的答案也会有所帮助!

如果您有域对象Foo:

class Foo {
    String itemPrice
}

然后在您的控制器操作中,您可以执行以下操作:

def save() {
    Foo f = new Foo()
    f.itemPrice = [params.item1Price, params.item2Price, params.item3Price].join(",")
    f.save()
}

您真正想要做的就是将您的页面中的参数加入一个字符串,对吗?

现在这对我来说似乎是糟糕的设计。如果订单更改,或者项目2没有选择任何内容,会发生什么?或者,如果有人想要编辑您的对象并且需要将值解析出来,会发生什么?显然你可以用逗号分开......直到其中一个值包含逗号!

最好为每个字段存储一个值,这意味着不同的东西,或者将单个字段存储为结构化值。您可能希望将Map编码为JSON并存储,例如,如果您真的只想在域对象中有一个字段。