【发布时间】:2014-11-17 07:44:26
【问题描述】:
在开始我的问题之前,我将尝试解释我正在尝试做的事情。
我正在使用 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 个重复的部分,那么在保存表单时,参数将如下所示
params:[mainInput: valMain, inputA:[valA1, valA2, valA3, valA4, valA5], inputB :[valB1, valB2, valB3, valB4, valB5]]
在控制器中,当我尝试形成实例并将其保存到数据库时,我使用了以下内容
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)
}
}
到目前为止,我设法使那部分正确。
现在问题来了。
在保存控制器中,我计划在将其保存到数据库之前进行一些数据检查。如果检查成功,则继续保存数据。如果不是,那么它将连同用户在表单中输入的数据一起返回到表单页面。代码如下
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
}
但还是不行。
那么有人对此有任何想法吗?
【问题讨论】:
标签: grails