Grails错误:没有这样的属性:它用于类:
Posted
技术标签:
【中文标题】Grails错误:没有这样的属性:它用于类:【英文标题】:Grails error: No such property: it for class: 【发布时间】:2011-04-15 12:53:58 【问题描述】:下面是我的代码。 在这里,我收到一个错误,即“没有这样的属性:它适用于类:emp.EmployeeController”。 我想我在这里做错了什么。 有什么建议吗??
def list =
def id=params.id
def results
String employee="SELECT empName, empDate, empNo from employee where empId='id'"
String referrer="SELECT empName, empDate, empNo from referer where empId='id'"
def employeeInstanceList = new ArrayList<Employee>()
Sql sql = new Sql(dataSource)
def joining=null
joining = sql.rows( "select joining from employee_dates")
if (joining!=null)
results = sql.eachRow(employee)
employeeInstanceList=getCalculatedEmployeeData(results)
/*
def employee = new Employee()
employee.setempName it.empName
employee.setEmpNo it.empNo
employee.setEmpDate it.EmpDate
employeeInstanceList.add employee
*/
else
results = sql.rows (currentDaySql)
employeeInstanceList=getCalculatedEmployeeData(results)
/*
def employee = new Employee()
employee.setempName it.empName
employee.setEmpNo it.empNo
employee.setEmpDate it.EmpDate
employeeInstanceList.add employee */
[employeeInstanceList: [employeeInstanceList: employeeInstanceTotal: Employee.count()]
def getCalculatedImpactData(def results)
def employee = new Employee()
employee.setempName it.empName
employee.setEmpNo it.empNo
employee.setEmpDate it.EmpDate
employeeInstanceList.add employee */
return [employeeInstanceList: employeeInstanceList]
谢谢, 梅加娜
【问题讨论】:
【参考方案1】:我会第二个leebutts回答...但只是一个指针,it关键字的使用通常仅限于闭包...所以不要在java中这样做:
List l = [];
for (Iterator i = l.iterator(); i.hasNext(); )
...do something adressing List l at position i...
你可以在 groovy / grails 中做到这一点:
list.each it ->
...do something with each object in the list (it)...
但你真的应该在 http://groovy.codehaus.org/Closures 上阅读 groovy 闭包
【讨论】:
【参考方案2】:这段代码有很多错误,我不知道从哪里开始......
但为了避免获得更多的反对票,我已经尝试过:)
我尝试将您的代码复制到 IDE 中,并尝试找出您想要实现的目标但无法实现。
这是我能得到的最接近的:
def list =
def id = parmas.id
def results
String employee = "SELECT empName, empDate, empNo from employe"
def employeeInstanceList
Sql sql = new Sql(dataSource)
def joining = sql.rows("select joining from employee_dates")
if (joining != null)
results = sql.eachRow(employee)
employeeInstanceList = getCalculatedEmployeeData(results)
else
results = sql.rows(currentDaySql)
employeeInstanceList = getCalculatedEmployeeData(results)
[employeeInstanceList: employeeInstanceList, employeeInstanceTotal: Employee.count()]
def getCalculatedImpactData(def results)
def employeeInstanceList = new ArrayList<Employee>()
results.each it ->
def employee = new Employee()
employee.empName = it.empName
employee.empNo = it.empNo
employee.empDate = it.EmpDate
employeeInstanceList.add(employee)
return employeeInstanceList
但它仍然指的是一个不存在的变量 currentDaySql,我不确定您要对“加入”结果做什么。
您确实需要阅读 Groovy 基础知识。
【讨论】:
【参考方案3】:发生错误的代码块大概是:
def getCalculatedImpactData(def results)
def employee = new Employee()
employee.setempName it.empName
employee.setEmpNo it.empNo
employee.setEmpDate it.EmpDate
employeeInstanceList.add employee
return [employeeInstanceList: employeeInstanceList]
it
没有在任何地方定义(提示:编译错误告诉你这个)。就像 Sebastian 所说,it
通常用于闭包;你在这里定义的是一个函数。大概你想在这里使用results
(或其他东西)而不是it
。
我假设您的代码中的某些内容(例如评论打开/关闭)不存在,并且是在您看到错误和发布代码之间添加的。否则你会得到其他错误。
【讨论】:
以上是关于Grails错误:没有这样的属性:它用于类:的主要内容,如果未能解决你的问题,请参考以下文章
类 [1] 的 Grails 错误属性 [0] 不能为空 - 在基本 grails 应用程序上
Grails 3.1.1 - 当模型类扩展另一个groovy类时,脏检查不起作用