我目前正在尝试在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])
}
通过它进行调试时,我发现它甚至没有调用动作功能。有没有办法解决这个问题,还是我需要以不同的方式解决这个问题?
答案 0 :(得分:0)
您需要在GSP的javascript
中使用head
库(支持AJAX)才能使remoteFunction
正常工作。如果您想扩展Grails的默认sitemesh layout
<head>
<meta name="layout" content="main"/>
<title>Term</title>
<g:javascript library="jquery"/>
</head>
我能够使您的用例工作(自举域并做了更多)。如果需要,我可以发送它。有关详细信息,请参阅Grails文档中的Ajax Section。