Grails错误:没有此类属性:它用于类:

Grails错误:没有此类属性:它用于类:,grails,Grails,下面是我的代码。 这里我得到一个错误,它是“没有这样的属性:它用于类:emp.EmployeeController”。 我想我在这里做错了什么。 有什么建议吗 def list ={ def id=params.id def results String employee="SELECT empName, empDate, empNo from employee where empId='id'" String referrer="SELECT e

下面是我的代码。 这里我得到一个错误,它是“没有这样的属性:它用于类: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]
}
谢谢,
Meghana

该代码有太多错误,我不知道从哪里开始

但为了避免获得更多的反对票,我尝试了:

我试图将您的代码复制到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的基础知识。

我支持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)...
}

但是,您应该仔细阅读groovy闭包的相关内容,其中出现错误的代码块可能是:

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]
}
它没有在任何地方定义提示:编译错误告诉了您这一点。正如Sebastian所说,它通常用于闭包;这里定义的是一个函数。大概你想用结果或者其他什么来代替它

我假设代码中的某些内容(例如注释开始/结束)不在其中,而是在看到错误和发布代码之间添加的。否则会出现其他错误