Grails中一个域类的依赖下拉列表

所以,我有一个域类,它有很多字段。我在GSP准备好了五个下拉菜单,数据在任何下拉列表的onChange上得到过滤,但是有一个问题。 对于在下拉列表中选择的一些组合,我们在数据库中没有数据,并且这些组合不是固定的。

所以,我想可能的是,一旦在第一个下拉列表(或任何下拉列表)上进行选择,其余的下拉列表会根据第一个选择取出值(意味着另一个下拉列表) -downs仅填充数据库中可用数据的那些值​​,这也应遵循后续选择。

此外,我已经看到了依赖下拉列表的示例,但我看到的所有示例都有多个下拉列表,但每个下拉列表都从不同的域类中获取值

是否甚至可以只使用一个域类来执行此操作?

这就是我的index.gsp的样子:

      
function printpgtyp(data) { console.log(data) }

为了回答你的问题,你需要做的是产生1 g:select元素和onChange调用本地java脚本而不是remoteFunction,因为你猜对了它自己的remoteFunction只会更新一个Div,你可能尝试使用半冒号并将多个远程function传递给一个onchange,而不是我尝试过的东西。

所以要回答你的问题,请参阅:

我希望我的选择下拉列表在Grails网站中使用Ajax自动填充

因为这可能是最明智的答案

你的gsp ……

  
function myMultiUpdater(id) { $.get('${createLink(controller:"Controller1", action: "action1")}?id='+id+'',function(e){ $('#selectbox1').hide().html(e).fadeIn('slow'); } $.get('${createLink(controller:"Controller2", action: "action1")}?id='+id+'',function(e){ $('#selectbox2').hide().html(e).fadeIn('slow'); } } $.get('${createLink(controller:"Controller3", action: "action1")}?id='+id+'',function(e){ $('#selectbox3').hide().html(e).fadeIn('slow'); } }

你的控制器

 controller1 { def action1() { def s=params.id String domclass1= (s.substring(0,1).toUpperCase()) String domclass2=s.substring(1,s.length()) String domclass=domclass1+domclass2.toLowerCase() Class domainClass = grailsApplication?.domainClasses.find { it.clazz.simpleName ==domclass+'Cities' }?.clazz def cities=loadCities(domainClass) render(template: 'cities', model: [cities: cities]) } } 

您只需扩展对象,或者不使用get use getJSON并传回特定值 – 请参阅上面对插件中selectJs.gsp的注释。 在这些选择框中,您还可以加载默认选择框或保留em,因为它们在进行选择之前不显示任何内容。 此方法加载整个内容 – 插件侧重于提取元素并显示给定表/ domainClass的相关定义元素

并且可以使用g:javascript标记

  

代替

  $.get('${createLink(controller:"Controller3", action: "action1")}?id='+id+'',function(e){ $('#selectbox3').hide().html(e).fadeIn('slow'); } 

因为他们会做同样的顶级看起来更整洁,更多的gsp在javascript内查找。 你的选择。