0

3つのパラメーターを受け取り、ブール値を返すServiceオブジェクトのメソッドを呼び出すためにAjaxクエリを作成する必要があります。次に、このブール値を使用して、事前に発生する検証メッセージを表示します。

これは私が現在持っているものです(機能していません)が、他のことを試しましたが、役に立ちませんでした。JQueryとGrailsを使用しています。

var isUnique = ${remoteFunction(
    service: 'Project', 
    action:'checkUniqueUserProjectId',
    params:{
        // These values are from  hidden fields in the form.
        // userId and projectId are string values and the group is an object
        uniqueId: userId,
        group: userGroup,
        projectId: myProjectId
    }
)}

ProjectServiceで呼び出されるメソッドは次のとおりです。

// Check whether or not a Project with the provided uniqueId already exists 
// in the database that is not itself.
def checkUniqueUserProjectId(uniqueId,group,projectId) {
    def filterCriteria = Project.createCriteria()
    def projectList = filterCriteria.list {
        and {
            eq("userProjectId", uniqueId)
            eq("group", group)
            ne("id",projectId)
        }
    }

    if(projectList.empty)
        return true
    else
        return false
}

どんな助けでも大歓迎です!

4

3 に答える 3

0

だからあなたのコントローラーで:

if ( projectService.checkUniqueUserProjectId(params.uniqueId, params.group, params.projectId) )
{
    render([:] as JSON)
}
else
{
    response.status = 403
}

JavaScript:

var isUnique;

$.ajax({
    type: "POST",
    url: "contextPath/controller/action",
    data: {uniqueId: userId, group: userGroup, projectId: myProjectId},
    success: function() { isUnique = true; },
    error: function() { isUnique = false; },
    dataType: "json"
});
于 2013-01-04T18:48:04.937 に答える
0
$.post('Project/checkUniqueUserProjectId', {
        uniqueId : userId,
        group    : userGroup,
        projectId: myProjectId
}, 
function (response) {
    if (response.firstChild.textContent=="true") {
        alert("hola mundo");
    }
});

応答がJSON形式の場合はより良い

于 2013-01-04T18:27:55.400 に答える
0

私は次のようなコードでリモート関数を使用することになりました:

${remoteFunction(action: 'isUniqueId', params: '\'uniqueid=\'+userId+\'&project_id=\'+myProjectId', onFailure:'$("#project").submit()', onSuccess:'verifyUniqueness(data, textStatus,detailsMessage)') }

...。

function verifyUniqueness(data, textStatus,detailsMessage) {
    if (data == 'false') {
        detailsMessage = detailsMessage + "A Project with the provided Project ID already exists.";
    }

    if (detailsMessage.trim() != '' ) { 
        stackedSummary.section('details', '<font style="color:red; font-weight:normal; line-height:0px;">' + detailsMessage + '</font>');
    } else {
        $('#project').submit();
    }
}

ProjectController

def isUniqueId = {
    def project = Project.get(params.project_id)
    if (project == null) {
        render(projectService.checkUniqueUserProjectId(params.uniqueid, null, null)) as JSON
    } else {
        render(projectService.checkUniqueUserProjectId(params.uniqueid, project.group, project.id)) as JSON
    }
}

みなさん、ありがとうございました!あなたは私を正しい方向に導くのを手伝ってくれました:)

于 2013-01-07T17:54:20.390 に答える