Grails中的动态行添加

时间:2015-10-05 11:48:49

标签: grails gorm grails-2.0

这是我的域类

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()集合。

0 个答案:

没有答案