Grails:不能填充<g:select>(新手:可能整个方法都错了)</g:select>

时间:2014-05-22 23:33:30

标签: jquery grails

我知道我必须做一些非常简单而又错误的事情。我有一个页面,里面有一个隐藏的div。当您单击页面上的按钮时,jQuery会显示该div。当div显示时,它有一个formRemote,其中包含我需要填充的下拉列表,但我只能得到一个空的下拉列表。

以下是formRemote中的g:select列表,如下所述:

<g:formRemote name="editinstitutionForm" url="[controller:'admin', action:'editInstitution']" onSuccess="doResult2(data)">
                <label>Institution: </label><g:select name = "pickInst" from = "${instlist}" style = "border-radius: 5px"></g:select><br><br>
                <label>New name: </label><g:textField name="username" style = "border-radius: 5px"></g:textField><br><br>

                <div id = "submit3"><g:submitButton id = "submit_button3" name="Submit"/></div>
            </g:formRemote>

这是使得包含g:select的div出现的按钮代码(使用jQuery):

<button class = "adminoption" id = "editInst" onclick = "${remoteFunction(action:'updateInstlist', controller: 'admin')}">Edit An Institution</button>

当单击此按钮时,我也在控制器中调用一个函数来准备显示列表,这是该函数:

def updateInstlist = { 
    instlist = Institution.list().collect {it.username}.sort(java.text.Collator.instance)
    return [instlist: instlist]
}

我知道上面的列表不是null并准备好了,因为我已经尝试将它打印到控制台。我确定这很简单,只是不知道我做错了什么。我不确定按钮调用的jQuery代码会有所帮助,但我会包含它:

$("#editInst").click( function() {
            $("#institutionEntered").hide();
            $("#pleaseChoose").hide();
            $("#institutionInfo2").hide();
            $("#editedInstitution").hide();
            $("#leftEntryForm").show();
            $("#instInfo3").show();
            $("#editInstInfo").show();
        });

最后,当我点击显示带有g:select的div的按钮时,这是我在Chrome调试控制台中获得的内容:

POST http://localhost:8080/FatcaOne_0/admin/updateInstlist 404 (Not Found) jquery-1.11.0.min.js:4
send jquery-1.11.0.min.js:4
n.extend.ajax jquery-1.11.0.min.js:4
onclick

1 个答案:

答案 0 :(得分:1)

我可以看到你填充g:每次按下按钮时选择,每次从数据库中检索数据,如果我是对的,这是不好的,这是我的建议,为了填充g:选择实现你的代码机构.list().... int生成描述视图的动作并将其作为模型传递并从头开始填充g.select标记,当用户显示div时它将被填充

我希望它有所帮助