【问题标题】:Grails error: No such property: it for class:Grails错误:没有这样的属性:它用于类:
【发布时间】: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]
}

谢谢, 梅加娜

【问题讨论】:

    标签: grails


    【解决方案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

        我假设您的代码中的某些内容(例如评论打开/关闭)不存在,并且是在您看到错误和发布代码之间添加的。否则你会得到其他错误。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-11
          • 2016-12-01
          • 1970-01-01
          • 2023-03-22
          • 2016-08-28
          相关资源
          最近更新 更多