2013-02-26 55 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) { 
}); 

底線是,如果你想的東西傳遞給服務器,你必須提供爲實現這一目標的手段。