我的应用程序中有 2 个选择框,它们是从 db 填充的,当我从第一个选择框选择一个值时,第二个选择框是通过 ajax 填充的。这个场景效果很好。但由于选择框中的值是静态的,我不想从 db 中填充它们,我认为使用这个文件更有用,并且有利于应用程序性能。那么我如何从文件(json、xml 等)中填充它们?第一个选择框到第二个是一对多
问问题
108 次
1 回答
1
这听起来像是很多工作,因为您将不得不从 db.xml 填充文本文件。事实上,它的最终结果实际上与缓存解决方案没有什么不同。http://mrdustmite.blogspot.co.uk/2010/09/simple-ehcache-in-grails.html?m=1
上面提到的插件从 JSON 值生成主要/次要值..
def selectSecondary(params) {
if (params.domain2) {
def domainClass = grailsApplication?.getDomainClass(params?.domain2)?.clazz
def query = {
eq params.bindid, params.id.toLong()
projections {
property(params.collectField)
property(params.searchField)
}
order(params.searchField)
}
def results =domainClass.createCriteria().list(query)
def primarySelectList = []
results.each {
def primaryMap = [:]
primaryMap.put('id', it[0])
primaryMap.put('name', it[1])
primarySelectList.add(primaryMap)
}
return primarySelectList as JSON
}
}
def gsattrs=['optionKey' : "${attrs.collectField}" , 'optionValue': "${attrs.searchField}", 'id': "${attrs.id}", 'value': "${attrs.value}", 'name': "${name}"]
gsattrs['from'] = primarylist
gsattrs['noSelection'] =attrs.noSelection
gsattrs['onchange'] = "${remoteFunction(controller:''+attrs.controller+'', action:''+attrs.action+'', params:'\'id=\' + escape(this.value) +\'&setId='+attrs.setId+'&bindid='+ attrs.bindid+'&collectField='+attrs.collectField2+'&searchField='+attrs.searchField2+'&domain2='+attrs.domain2+'&controller='+attrs.controller+'\'',onSuccess:''+attrs.id+'Update(data)')}"
def link = ['action': attrs.action , 'controller': attrs.controller ]
out<< g.select(gsattrs)
如果您希望沿着这条路线走下去,您应该能够使用该功能从文本文件中重现相同的效果......
于 2013-09-28T21:17:53.787 回答