将多个选定的下拉值保存到 Grails 中的单个列中
Save multiple selected dropdown values into a single column in Grails
如何将多个选定的下拉值保存到 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
您的问题有点含糊,所以希望有点含糊的回答也会有所帮助!
如果你有一个域对象 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 并存储它,例如,如果你真的只想在你的域对象中有一个字段。
如何将多个选定的下拉值保存到 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
您的问题有点含糊,所以希望有点含糊的回答也会有所帮助!
如果你有一个域对象 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 并存储它,例如,如果你真的只想在你的域对象中有一个字段。