我有一种情况,一旦在另一个下拉列表中做出选择,我需要在我的 gsp 上填充一个下拉列表。我不知道该怎么做。在呈现 gsp 之前,我通过模型映射填充了父下拉列表。
我可以在渲染 gsp 之前轻松地从我的 Controller 向 gsp 提供模型信息,但是我在动态创建模型并将模型传递给 gsp 时遇到了麻烦,即一旦 gsp 已经渲染了怎么办?我应该将它作为ajax发送还是如何发送?我就是看不出来。我不是在寻找准确的代码答案,而是在寻找概念性建议。
我做的第一步是尝试在 gsp 上的父下拉列表用于选择值时调用 Controller 中的函数:
<g:select name = "seleInst" from = "${instlist}" style = "border-radius: 5px" onchange="${remoteFunction(action:'updateUserlist(this.value)', controller: 'admin')}"></g:select>
我在这里面临的问题是如何将参数(在父下拉列表中选择的值)传递给 Controller 方法。我只是把它放在上面的括号中以帮助我思考。这可能不是正确的语法。
谢谢。
最佳答案
执行此操作的正确方法是通过 ajax 填充第二个列表。使用 jQuery 这非常简单。
- 将 on("change") 事件监听器附加到第一个选择列表。
- 进行 ajax 调用以从您的 Controller 获取 JSON 响应,并传递所选值。
- 使用来自 Controller 的 JSON 响应用选项元素填充第二个列表。
如果确实需要,我可以提供每个的详细代码示例,但您说您只是想要概念性建议,所以让我们从那里开始吧。
已更新
看到您正在使用 remoteFunction
(我可能会提到它在未来的 Grails 版本中会消失),您将很难正确地获取参数。
然而,根据this post可以办到。如果您使用的是 Grails 的 2.x 版本,那么您的提供者将是 jQuery。我个人一直远离remoteFunction
标签,自己写了jQuery。
关于javascript - Grails:选择另一个下拉列表时填充下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23848457/