0

我目前正在尝试在 Grails 中创建一个动态下拉菜单,并且我有一个 Ajax 语句,该语句应该从单击的选项中检索值,并使用与用户单击的第一个选项相对应的项目填充第二个下拉菜单。这是我的声明并在我的 gsp 文件中调用:

<div class="fieldcontain">
    <g:select name="termSelection" from="${Term.list()}" values="${params.id}" optionKey="id" optionValue="semester" noSelection="['':'----Term----']"
                 onchange="${remoteFunction (controller: 'term', action: 'findWeeksForSemester', params: '\'term.id=\' + this.value', update: 'weekSelection')}"/>

</div>
<br>
<td id="weekSelection">
    <select>
        <option>----Week----</option>
        <g:select name="week.id" from="${Week.list()}" optionValue="week" optionKey="id"/>
    </select>
</td>

动作调用的函数是这样的:

def findWeeksForSemester = {
    println("Testing for action event")
    println(params)
    def term = Term.get(params.term.id)
    render(template: 'weekSelection', model:  [week: term.week])
}

通过它进行调试时,我发现它甚至没有调用动作函数。有什么办法可以解决这个问题,还是我需要以不同的方式解决这个问题?

4

1 回答 1

0

您需要 GSP 中的javascript库(支持 AJAX)head才能完成remoteFunction工作。如果您想sitemesh layout从 Grails扩展默认设置,如下所示

<head>
    <meta name="layout" content="main"/>
    <title>Term</title>
    <g:javascript library="jquery"/>
</head>

我能够使您的用例工作(引导域并做得更多)。如果需要我可以寄过去。有关详细信息,请参阅Grails 文档中的Ajax 部分

于 2013-04-16T20:00:59.950 回答