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 中,如何在字段旁边显示验证错误消息?

Grails 3.1.1 - 当模型类扩展另一个groovy类时,脏检查不起作用

没有这样的属性:FOR_RUNTIME用于类:org.gradle.api.attributes.Usage

禁用一个类的 Grails 脚手架验证

Grails openid 插件 2.0.0 RC1:得到“没有这样的属性:用户异常”