1

こんにちは友達。

私はここ数日、非常に苛立たしい問題に苦しんでおり、ついに私のロープの終わりにいます。少し時間があった私のチームの誰もが問題を理解することができないようで、それは私を狂気に駆り立てています!

とにかく、ユーザーがBootstrapモーダルダイアログから削除を確認したときに呼び出される削除アクションを備えたコントローラーがあります。アクションが呼び出され、リダイレクトステートメントがデバッグで正常にヒットします。Chrome開発ツールでの呼び出しが呼び出されていることも示しています。

ただし、何らかの理由で、ページがリダイレクトされることはありません。アクションに他のコードを含めずに、明示的にGoogleにリダイレクトしようとしたこともあります。私はその取引が何であるかわかりません。関連するコードを投稿します。あなたが必要とするかもしれない他のコードがあるかどうか私に知らせてください。

CatalogController.groovy

def delete = {
    def catalog = Catalog.get(params.id)
    if (catalog == null) {
        redirect(controller: 'home', action: 'dashboard')
        println "Catalog is null and cannot be Deleted"
        return
    }

    if (request.method == "POST") {
        //catalog.deleted = true TESTING UNTIL REDIRECT WORKS 
        if (catalog.validate()) {
            userService.addUserActivity("Deleted catalog " + catalog.title, catalog.class.getName(), catalog.id, null)
            flash.notice = "Catalog has been deleted"
            catalog.save()
            println "Catalog successfully deleted"
        }
        else {
            flash.error = "There was an error marking the catalog deleted"
        }

        redirect(controller: 'home', action: 'dashboard')
        return
    }

    [ catalog: catalog ]
}

ブートストラップモーダルマークアップ

<div id="deleteDialog" class="modal hide fade" tabindex="-1" role="dialog"  aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal"
            aria-hidden="true">×</button>
        <h3 id="myModalLabel">Delete Catalog</h3>
    </div>
    <div class="modal-body">
        <p><strong>Are you sure you want to delete this Catalog?</strong></p>

        <div class="dialogInnerInfo">
            <div class="row-fluid control-group">
                <label class="control-label" for="catalogNumber">Catalog Number:</label>
                <div class="controls">
                    <label id="catalogNumber" >${catalog.legacyId}</label>
                    <input type="hidden" name="id" value="${catalog.id}"/>
                </div>
            </div>

            <div class="row-fluid control-group">
                <label class="control-label" for="catalogTitle">Catalog Title:</label>
                <div class="controls">
                    <label id="catalogTitle">${catalog.title}</label>
                </div>
            </div>

            <div class="row-fluid control-group">
                <label class="control-label" for="catalogTitle">Number of Samples:</label>
                <div class="controls">
                    <label id="catalogTitle">${catalog.sampleCount}</label>
                </div>
            </div>
        </div>
    </div>
    <div class="modal-footer">
            <g:remoteLink class="btn btn-primary" controller="catalog" action="delete" id="${catalog.id}" data-dismiss="modal">Yes</g:remoteLink>
            <button class="btn btn-primary" value="${catalog.id}" data-dismiss="modal" onclick="${remoteFunction(action:'delete', controller: 'catalog', params: '\'id=\'  + this.value')}">Click Here</button>
            <button class="btn" data-dismiss="modal" aria-hidden="true">No</button>
        </div>
    </div>

さまざまな種類のボタン(g:links、buttons、g:remoteLinksなど)を試し、削除アクションもクリーンアップしました。また、ブラウザキャッシュ、grailsキャッシュを削除し、grails-cleanを実行し、他のタスクを実行して、問題が自分の環境にあるかどうかを確認しましたが、他のタスクもリダイレクトされません。

醜いコーディングはご容赦ください。リダイレクトが機能するとクリーンアップされます。提案や改善も歓迎します:)

お手数をおかけしますが、よろしくお願いいたします。

4

1 に答える 1

0

応答が JS から解析されるため、リモートリンクはリダイレクトを行わないため、現在表示されているバージョンは機能しません。JavaScript で手動で処理するか、ag:link を使用する必要があります。

さらに、リンクと組み合わせて使用​​することはできません。これはdata-dismiss="modal"、Twitter ブートストラップがクリックを傍受し、それ以上のサーバー通信を阻止するためです。data-dismiss="modal" を削除すると動作します。

于 2012-11-02T02:01:14.023 に答える