我想使用BootStrap.groovy中提供的数据进行下拉。
我的城市域类
package city.model
class City {
String cityName
static constraints = {
cityName(maxSize: 50) }
}
在我的服务类
中public class CityService {
def citySelect(String cityName) //this is just a sample
{
City city = new City()
city.cityName = city.findByCityName(cityName)
}
}
控制器
public class CityController {
def cityService
def
def selCity() {
def selectCity = cityService.citySelect(params.cityName){
if(selectCity != null){
render view // my view
}
else{
render view // error select again view
}
}
}
BootStrap.groovy中
import city.City;
class BootStrap {
def init = { servletContext ->
for(String cityName in ['Addis Ababa', 'Semera','Asosa','Gondar', 'Jijiga','Harar', 'Dire Dawa', 'Bahir Dar',
'Hawassa', 'Arba Minch', 'Adama', 'Mekelle']) {
City.findOrSaveByCityName(cityName).save()
}
}
def destroy = {
}
}
我用过这个
<g:select name="cities" from="${City.list()}" optionKey="id" optionValue="cityName"/>
in my view but showing error cannot envoke method list on null object
mu代码有什么问题,我该怎么做才能使它工作。请任何建议
答案 0 :(得分:1)
<g:select name="city" from="${city.model.City.list()}" optionValue="${cityName}"
noSelection="['':'-Please select the City-']" optionKey="id"/>
这可以正常工作。
答案 1 :(得分:0)
也许你误解了Bootstrap的观点。
根据命名约定,Bootstrap是在您的站点启动时触发的部分。
您通常会使用它来确保在启动之前生成所需的db表记录,即管理员帐户或在某些城市的情况下生成。
您不会使用Bootstrap与您以编辑或选择方式生成的记录进行交互。
一旦完成所有操作并保存 - 您还可以使用控制器/视图列出/查看/更新/添加城市。
您可以在这些视图和匹配的控制器中创建g:select标签,这些控制器将查询您通过bootstrap保存的记录
<强> E2A:强>
好的,请阅读您的评论
使用gsp顶部的导入
<%@ page import="city.City" %>
或调用City domainClass的完整打包路径 city.City.list
<g:select name="cities" from="${city.City.list()}" optionKey="id" optionValue="cityName"/>
答案 2 :(得分:0)
这应该有效:
<g:select name="cities" from="${city.model.City.list()}"
optionKey="id" optionValue="cityName"/>
但是,建议不要在GSP中执行city.model.City.list()
等查询。相反,您应该在控制器操作或服务中检索您的数据(城市列表),并通过模型将其传递给GSP。
答案 3 :(得分:0)
创建您在Bootstrap.groovy中插入数据库的城市列表(在视图中[viewName] .gsp)
标记是这样的
<g:select name="city" from="${city.model.City.list()}" value="${city.name}"
noSelection="['':'-Please select the City-']" optionKey="id"/>
但是,Bootstrap应该用于初始化数据库和应用程序的默认值,也用于执行启动(在关闭时在关闭时启动init关闭)。