gpt4 book ai didi

grails - 多选值的数据绑定(bind)

转载 作者:行者123 更新时间:2023-12-02 14:13:59 25 4
gpt4 key购买 nike

如果我有一个具有一对多关联的域对象和一个使用的相应编辑 View <g:select multiple="true" ...>标签。如何取消关联所有“许多”对象?

在 Controller 中,我有以下代码行来更新对象:

 objectInstance.properties = params

问题是如果我取消选择 html 表单中的所有内容并提交它,给定的属性将不会包含在参数中。由于该属性不在 params ,绑定(bind)机制不会对此集合执行任何更新。

一个简单的解决方法是始终在 Controller 中检查潜在清除的集合:
 if(!params.someCollection){
params.someCollection = []
}
objectInstance.properties = params

在这种情况下,数据绑定(bind)机制将根据需要清除集合。

但是如何做到更通用呢?我不想对我已经拥有的每个 Controller 中的每个集合进行此检查。

我查看了 g:select 中的 noSelection 属性(我也许可以使用一个专用选项,即“无”),但它不是很有用。首先我必须实现 require at least one该字段的逻辑和第二个 noSelection 默认值必须在 Controller 中以某种方式处理( -1null 不起作用)。

最佳答案

支持多选绑定(bind):

但是,请确保如果选择发送的一个值是字符串,如果您选择,则多个值将是字符串列表或数组列表。

For more see question here :

<g:select name="dhrsX.id" 
from="${DeviceHistoryRecord.list()}"
multiple="multiple"
optionKey="id"
value="${customerSiteInstance?.dhrs*.id}"/>

关于grails - 多选值的数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23696318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com