2012-10-08 107 views
0

我有一個列表,比方說,人員。每個人都有一個「朋友」的領域,可以是「是」或「否」。他們的「友誼」的狀態呈現在一列在列表中:訪問列表中的單個元素

<g:if test="${person.friend.status=='no' }"> 
<td><g:textField name="status" value="${person.friend.status}" readonly="readonly" style="width:60px;border:0px; background:transparent;color:black"/></td> 

     <td style="width:20px"> 
<g:actionSubmitImage action="acceptFriend" value="aceptar" src="${resource(dir: 'images', file: '/skin/tick_16.png')}" style="width:5px;height:8px;"/> 
     </td> 
     <td> 
     <g:actionSubmitImage action="refuseFriend" value="aceptar" src="${resource(dir: 'images', file: '/skin/wrong_16.png')}" style="width:5px;height:8px;"/>  
     </td>  
     </g:if> 

正如你可以看到,當朋友的狀態是「不」,兩個按鈕呈現,一個說:「這個人是我的朋友」另一個說「這個人不是我的朋友」。我的問題是:

當我點擊「這個人是我的朋友」的圖片時,我稱之爲「接受朋友」的行爲。但是,如何訪問個人實例,將其狀態更改爲「是」,並堅持在數據庫中?我認爲它可能是「params」變量,但是如何將它存儲在參數中以便在Controller中訪問?

謝謝!

回答

1

我相信,你不能使用G:actionSubmitImage這樣的,因爲標籤的文檔中寫到:

你不能在同一個表單中使用多個actionSubmitImage標籤和有它在Internet Explorer 6或7的工作除非你添加一些自定義的JavaScript。請參閱此頁獲取更多信息和解決方法

正確的解決方案是在列表中每個朋友都有一個表單,然後您可以輕鬆傳遞域類的ID。

+0

我可以住在我們的頁面不工作在IE 6或7 – Fustigador

+0

注意,它不僅是關於IE 6和7,但重要的是,你不能有超過1 g:actionSubmitImage 1格式。所以不幸的是它對你的用例沒用。 –

+0

你是第一個,你接受了。但是,我必須說,我可以使用兩個在相同的形式,他們的工作。我的錯誤是,參數領域以我認爲不同的方式命名。但這兩個actionSubmitImage工作完美... – Fustigador

1

actionSubmitImage以某種形式創建提交按鈕。

在您正在迭代的列表中爲每個person創建一個表單。

在該表單中,添加一個名爲「id」的值爲=「$ {person.id}」的隱藏字段,並在acceptFriend動作中從params.id中讀取它。

0
<a href="${createLink(action: 'refuseFriend', id: person.id)}"><img src="${resource(dir: 'images', file: '/skin/wrong_16.png')}" style="width:5px;height:8px;" /></a> 

這是沒有測試的代碼,只是爲了給你的想法。

0

湯姆·梅斯的要求,我張貼既克片段:actionSubmitImage標籤工作:

<form> 
     <g:hiddenField name="contrato" value="${factura.id}"/> 
<td> <g:link title="${message(code :'contratosVer.tooltip')}" controller="campaign" action="show" id="${factura.id}" style="width:160px"> <g:img dir="images" file="/skin/eye_16.png"/></g:link> </td> 

     <td><g:textField name="campaign" value="${factura.nombre}" readonly="readonly" style="width:120px;border:0px; background:transparent;color:black"/></td> 

     <td><g:textField name="total" value="${factura.presupuestosPendientes.total}" readonly="readonly" style="width:40px;border:0px; background:transparent;color:black"/></td> 
      <g:if test="${factura.estado=='Espera'}"> 

         <td><g:textField name="estado" value="${factura.estado}" readonly="readonly" style="width:60px;border:0px; background:transparent;color:black"/></td> 


     <td style="width:20px"> 
     <g:actionSubmitImage action="aceptarCamp" value="aceptar" src="${resource(dir: 'images', file: '/skin/tick_16.png')}" style="width:5px;height:8px;"/> 
     </td> 
     <td> 
     <g:actionSubmitImage action="rechazarCamp" value="aceptar" src="${resource(dir: 'images', file: '/skin/wrong_16.png')}" style="width:5px;height:8px;"/>  
     </td>  
     </g:if> 
      <g:else> 

         <td><g:textField name="estado" value="${factura.estado}" readonly="readonly" style="width:65px;border:0px; background:transparent;color:black"/></td> 

         <td></td><td></td> 
      </g:else> 
     <g:set var="desc" value="${result.toString()}" /> 
     <g:if test="${desc.size() > 120}"><g:set var="desc" value="${desc[0..120] + '...'}" /></g:if> 
         </form> 

抱歉耽擱,隊友,但我離開工作了三天。