gpt4 book ai didi

grails - 复选框列表

转载 作者:行者123 更新时间:2023-12-04 03:59:53 27 4
gpt4 key购买 nike

我有两个域类

class Contract {
String number
static hasMany = [statements:Statement]
}

class Statement {
String code
static hasMany = [contracts:Contract]
}

我想在我的 gsp 中显示所有可用的语句,每个语句旁边都有一个复选框,允许用户选择哪些语句适用于契约(Contract)。所以像:
[ ] Statement Code 1
[ ] Statement Code 2
[ ] Statement Code 3

我从这个开始:
<g:each in="${Statement.list()}" var="statement" status="i">
<g:checkBox name="statements[${i}].id" value="${statement.id}" checked="${contractInstance.statements.contains(statement.id)}" />
<label for="statements[${i}]">${statement.code}</label>
</g:each>

但我无法获得 Controller 的已检查语句列表(列表中有 null 元素,有重复的语句......)。

知道如何实现这一目标吗?

最佳答案

这是可能的,但它确实需要一些技巧。首先,每个复选框必须具有相同的名称,“语句”:

<g:each in="${org.example.Statement.list(sort: 'id', order: 'asc')}" var="statement" status="i">
<g:checkBox name="statements" value="${statement.id}" checked="${contract.statements.contains(statement)}" />
<label for="statements">${statement.content}</label>
</g:each>

其次,在 Controller 中,您必须在绑定(bind)之前删除“_statements”属性:
def contract = Contract.get(params.id)
params.remove "_statements"
bindData contract, params
contract.save(failOnError: true)

复选框支持尚未针对此用例设计,因此需要 hack。多选列表框通常用于此类场景。

关于grails - 复选框列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8737748/

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