0

ドメイン クラス Report があり、参照されている子クラス Prompt があります。

レポートの編集ページでは、テーブル内のプロンプトの順序を並べ替えることができます。次に、ユーザーがレポートを実行しようとすると、そのページでプロンプトが上記の順序で表示されます。

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 の値を取得するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

2

これは、HTTP / Java EEがどのように機能するかを基本的に理解することで、問題を非常に簡単に解決できるようになる時期の1つです(これは頻繁に発生します)。フォームの有無にかかわらず、サーバーに送信されるリクエストに値を渡して、サーバーに送信する必要があります。これはどのように

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

要するに、サーバーに何かを渡したい場合は、それを実現するための手段を提供する必要があります。

于 2013-02-26T23:04:21.020 に答える