Grails:选择另一个下拉列表时填充下拉列表

时间:2014-05-24 18:39:20

标签: javascript jquery grails drop-down-menu

我有一种情况,一旦在另一个下拉列表中做出选择,我需要在我的gsp上填充下拉列表。我不知道该如何解决这个问题。我在渲染gsp之前通过模型映射填充了父下拉列表。

在渲染gsp之前,我可以很容易地从我的控制器向gsp提供模型信息,但是我无法动态创建并将模型传递给gsp,即一旦gsp已经渲染了怎么办?我应该把它作为ajax或如何发送?我似乎无法看到它。我不像概念建议那样寻找确切的代码答案。

我正在做的第一步是当gsp上的父下拉列表用于选择值时,尝试在控制器中调用一个函数:

<g:select name = "seleInst" from = "${instlist}" style = "border-radius: 5px" onchange="${remoteFunction(action:'updateUserlist(this.value)', controller: 'admin')}"></g:select>

我在这里遇到的问题是如何将参数(在父下拉列表中选择的值)传递给控制器​​方法。我只是把它放在上面的括号中以帮助我思考。这可能不是正确的语法。

感谢。

1 个答案:

答案 0 :(得分:2)

执行此操作的正确方法是通过ajax填充第二个列表。使用jQuery非常简单。

  1. 将on(&#34; change&#34;)事件监听器附加到第一个选择列表。
  2. 进行ajax调用以从控制器获取JSON响应,并传递所选值。
  3. 使用来自控制器的JSON响应,使用选项元素填充第二个列表。
  4. 如果真的需要,我可以提供详细的代码示例,但是你说你只是想要概念建议,所以让我们从那开始。

    <强>更新

    看到你正在使用remoteFunction(我可能会提到Grails的未来版本中将会消失),你将会在那里正确地获取你的参数。

    然而,根据this post,可以做到。如果您使用的是2.x版本的Grails,那么您的提供程序将是jQuery。我总是亲自远离remoteFunction标签并编写自己的jQuery。