2013-02-26 44 views
0

我有一个域类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的值?

谢谢。

+0

尝试使用表单 – doelleri 2013-02-26 21:45:19

+0

@doelleri这已经在页面的表单中,是你的意思吗? – idonaldson 2013-02-26 21:46:45

+0

然后尝试使用输入;) – doelleri 2013-02-26 21:47:37

回答

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) { 
}); 

底线是,如果你想的东西传递给服务器,你必须提供为实现这一目标的手段。