这是我的域类
class Pen implements Serializable {
Long id
String symbol
String companyName
}
这是我的表格
@Validateable
class PenForm {
List<Pen> pens = [].withLazyDefault {new Pen()}
}
这是我的控制器
class PenController {
def save = { PenForm form ->
def retList = []
retList = penService.savePens(form) //saves pen object
render(view:"index", model:["command":retList])
}
def addMoreRows() {
println params
render(template: "pen", model: ['pen':new Pen() ,'i':7]) //this will return newly generated row index
}
}
我将控制器称为保存,并将动态行添加到笔的当前列表中。
这是我的index.gsp
<g:form>
<div >
<table id="penTable" >
<thead>
<tr>
<th><i class="fa fa-key"></i> Ticker Symbol</th>
<th>Company Name</th>
</tr>
</thead>
<tbody>
<g:each in="${command}" var="pen" status="i">
<g:render template="pen" model="['pen': pen, 'i':i]"/> //the template "pen" just renders the rows using the model provided
</g:each>
</tbody>
</table>
</div>
<g:actionSubmit value="save"/>
</g:form>
我正在使用此脚本动态添加行
$("#addRowsLink").on("click", function(e) {
e.preventDefault();
var url = '${g.createLink(controller: 'pen', action: 'addMoreRows')}';
$.get(url, function(html) {
$("#penTable>tbody").append(html);
});
});
这是我的_pen.gsp
<tr>
<g:hiddenField name="pens[$i].id" value="${pen?.id}"/>
<td><g:textField name="pens[$i].tickerSymbol" value="${pen?.tickerSymbol}"/></td>
<td><g:textField name="pens[$i].companyName" value="${pen?.companyName}"/></td>
</tr>
我对Grails很新。在这里,我能够将当前域绑定到表单,我能够更新当前值。但是当我动态添加行时,表单对象总是将新条目显示为null。 有没有办法动态添加行?
编辑我可以将表单方法更改为其他内容。这是否可以从视图中获取相同域类的objects()集合。