从视图获取表值到控制器

时间:2013-02-26 21:40:04

标签: grails

我有一个域类,Report,带有引用的子类,提示符。

您可以在编辑报告页面中重新排序表格中提示的顺序。然后,当用户运行报告时,在该页面上的提示按所述顺序排列。

Report edit.gsp页面上的表使用一些jQuery来允许拖放行,并且它更新了显示顺序号,但是只在UI端,没有任何东西回到数据库。

我希望能够将这个新订单传递回我的更新命令,但无法弄清楚如何在我的生命中获取表行数据。

搜索几乎所有结果时,如何将数据从控制器传输到视图,反之亦然。

以下是表格代码片段

<table id="prompts">
            <thead>
                <tr>
                    <th>${message(code: 'prompt.name.label', default: 'Name')}</th>
                    <th>${message(code: 'prompt.description.label', default: 'Description')}</th>
                    <th>${message(code: 'prompt.required.label', default: 'Required')}</th>
                    <th>${message(code: 'prompt.displaySeqno.label', default: 'Display Order')}</th>
                </tr>
            </thead>
            <tbody>
                <g:each in="${reportInstance.prompts.sort{it.displaySeqno}}" status="i" var="prompt">
                    <tr class="${(i % 2) == 0 ? 'even' : 'odd'}" onclick='window.location = "${createLink(controller: "prompt", action: "edit", id: prompt.id)}"'>
                        <td>${fieldValue(bean: prompt, field: "name")}</td>
                        <td>${fieldValue(bean: prompt, field: "description")}</td>
                        <td>${prompt.required}</td>
                        <td class="displaySeqno">${prompt.displaySeqno}</td>
                    </tr>
                </g:each>
            </tbody>
        </table>

然后在控制器中,我尝试了

params.list('displaySeqno')

但它只会返回一个空数组。

如何从控制器类中获取displaySeqno的值?

感谢。

1 个答案:

答案 0 :(得分:2)

这是其中一个时间(发生了很多),其中对HTTP / Java EE如何工作的基本理解将使您能够非常轻松地解决您的问题。表单或没有表单,您必须将值传递到服务器的请求,以便它最终在服务器上。这是怎么回事?

<td class="displaySeqno">${prompt.displaySeqno}</td>

永远要去服务器,表格还是没有形式?答案是,事实并非如此。假设有一个典型的表单帖子,您需要将值存储在隐藏字段中

<input type="hidden" name="displaySeqno" value="${prompt.displaySeqno}" />

然后它会进入服务器。如果您正在使用某种类型的Ajax进行处理,则需要通过API将其作为参数传递。假设jQuery,例如:

伪代码:

var params = $('#youFormId').serialize();
$.post('some/url/to/post/to', params, function(data) { 
});

底线是,如果你想将某些东西传递给服务器,你必须提供相应的方法。