gpt4 book ai didi

grails - 具有可重复输入的处理形式

转载 作者:行者123 更新时间:2023-12-02 16:04:24 25 4
gpt4 key购买 nike

在开始我的问题之前,我将尝试解释我要做什么。

我正在使用Grails创建一个表单,该表单上有2个部分,即主要输入和可重复输入。有关结构外观的想法,请参见下文。

<div class="primary">
<div class="${hasErrors(bean: dataInputInstance, field: 'mainInput', 'error')}">
<label class="control-label">
<g:message code="dataInput.mainInput.label" default="Main Input"/>
</label>
<div class="controls">
<g:textField name="mainInput" value="${dataInputInstance?.mainInput}" />
</div>
</div>
</div>
<div class="repeatable">
<div class="span6">
<div class="${hasErrors(bean: dataInputInstance, field: 'inputA', 'error')}">
<label class="control-label">
<g:message code="dataInput.InputA.label" default="Input A"/>
</label>
<div class="controls">
<g:textField id='inputA_1' name="inputA" value="${dataInputInstance?.inputA}" />
</div>
</div>
</div>
<div class="span6">
<div class="${hasErrors(bean: dataInputInstance, field: 'inputB', 'error')}">
<label class="control-label">
<g:message code="dataInput.InputB.label" default="Input B"/>
</label>
<div class="controls">
<g:textField id='inputB_1' name="inputB" value="${dataInputInstance?.inputB}" />
</div>
</div>
</div>

输入的可重复部分可以重复1至50次。生成并保存在数据库中的实例数取决于创建的重复表格的数量。每个实例都是主要输入+重复输入的组合。

如果说,我创建了5个重复的部分,那么在保存表单时,参数将如下所示

参数:[mainInput:valMain,inputA:[valA1,valA2,valA3,valA4,valA5],inputB:[valB1,valB2,valB3,valB4,valB5]]

在 Controller 中,当我尝试形成实例并将其保存到数据库时,使用了以下内容
def save() {
def length = inputA.size()
def i

if (i = 0; i < length; i++){
DataInput dataInputInstance = new DataInput()
dataInputInstance.mainInput = params.mainInput.trim()
dataInputInstance.inputA = params.inputA[i].trim()
dataInputInstance.inputB = params.inputB[i].trim()

dataInputInstance.save(flush:true)
}
}

到目前为止,我设法使该部分正确。

现在问题来了。

在保存 Controller 内部,我计划在将数据保存到数据库之前包括一些数据检查。如果检查成功,则将继续保存数据。如果不是,它将与用户在表单中输入的数据一起返回到表单页面。该代码如下
if (insert checking condition here){
render(view: "create", model: [dataInputInstance: dataInputInstance]) //If fail
}

如果可重复部分的数量为1,则该表单将与用户输入的数据一起呈现。但是,如果可重复部分大于1,则将数据传递回表单会有困难。

我试图将参数传递回表单,因为我认为既然参数包含数组,所以将参数传递回表单是合乎逻辑的,如下所示
if (insert checking condition here){
render(view: "create", model: [dataInputInstance: params]) //If fail
}

但仍然无法正常工作。

那么有人对此有任何想法吗?

最佳答案

我正在查看的该块中,您将dataInputInstance.inputA设置为单个值,而不是整个列表对象。这是您想要的吗?

dataInputInstance.inputA = params.inputA[i].trim()
dataInputInstance.inputB = params.inputB[i].trim()

如果不是这个原因,您可以发布您的View GSP代码吗?需要查看如何从验证失败的 Angular 读取值。

关于grails - 具有可重复输入的处理形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26967787/

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