我有一份名单,比方说,人。每个人都有一个“朋友”字段,可以是“是”或“否”。他们的“友谊”状态显示在列表的一列中:
<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>
正如你所看到的,当朋友状态为“否”时,会出现两个按钮,一个说“那个人是我的朋友”,另一个说“这个人不是我的朋友”。我的问题是:
当我点击“此人是我的朋友”的图像时,我将动作称为“acceptFriend”。但是,如何访问单个人实例,将其状态更改为“是”,并保留在数据库中?我认为它可能与“params”变量有关,但是如何将它存储在Controller中以便在Controller中访问?
谢谢!
答案 0 :(得分:1)
我相信,你不能像这样使用g:actionSubmitImage,因为在标签的文档中写道:
除非添加一些自定义JavaScript,否则不能在同一表单中使用多个actionSubmitImage标记,并使其在Internet Explorer 6或7中工作。请参阅此页面以获取更多信息和解决方法。
正确的解决方案是在列表中为每个朋友创建一个表单,然后您可以轻松传递域类的ID。
答案 1 :(得分:1)
actionSubmitImage
以某种形式创建提交按钮。
为您要迭代的列表中的每个person
创建表单。
在该表单中,添加名为“id”的隐藏字段,其值为“$ {person.id}”,并在acceptFriend
操作中从params.id
读取。
答案 2 :(得分: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>
这不是经过测试的代码,只是为了给你一个想法。
答案 3 :(得分:0)
根据Tom Metz的要求,我发布了两个g: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>
对不起延迟,伙伴,但我已经离开工作三天了。