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>

ご覧のとおり、友達のステータスが「いいえ」の場合、「その人は私の友達です」というボタンと「この人は私の友達ではない」というボタンの2つのボタンが表示されます。私の質問は:

「この人は私の友達です」という画像をクリックすると、アクションを「acceptFriend」と呼びます。しかし、個人のインスタンスにアクセスして、ステータスを「はい」に変更し、データベースに保持するにはどうすればよいでしょうか。「params」変数を使用している可能性があると思いますが、コントローラーでアクセスするためにパラメーターに格納するにはどうすればよいですか?

ありがとうございました!

4

4 に答える 4

1

actionSubmitImage、何らかの形式で送信ボタンを作成します。

person反復するリストでそれぞれのフォームを作成します。

そのフォームに、value = "$ {person.id}"を指定して「id」という名前の非表示フィールドを追加し、acceptFriend実際にから読み取りますparams.id

于 2012-10-08T11:51:52.363 に答える
1

タグのドキュメントには次のように書かれているため、このように g:actionSubmitImage を使用することはできないと思います。

カスタム JavaScript を追加しない限り、同じフォーム内で複数の actionSubmitImage タグを使用して Internet Explorer 6 または 7 で機能させることはできません。もう少し詳しい情報と回避策については、このページを参照してください

正しい解決策は、リスト内のフレンドごとにフォームを作成することです。そうすれば、ドメイン クラスの ID を簡単に渡すことができます。

于 2012-10-08T09:01:45.690 に答える
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>

これはテスト済みのコードではなく、アイデアを提供するためだけのものです。

于 2012-10-08T12:25:31.290 に答える
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>

遅れてすみません、相棒、でも私は3日間仕事を休んでいました。

于 2012-10-15T07:33:07.990 に答える