Ошибка Grails: такого свойства нет: это для класса: - PullRequest
0 голосов
/ 22 сентября 2010

Ниже мой код.Здесь я получаю сообщение об ошибке «Нет такого свойства: это для класса: 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]
}

Спасибо, Мегана

Ответы [ 3 ]

2 голосов
/ 22 сентября 2010

я бы ответил вторым Либуттом ... но только указатель, использование ключевого слова 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 замыканиях в http://groovy.codehaus.org/Closures

2 голосов
/ 22 сентября 2010

В этом коде так много неправильного, я не знаю, с чего начать ...

Но чтобы не набрать больше голосов, я пытался:)

Я пыталсяскопируйте свой код в 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.

0 голосов
/ 22 сентября 2010

Блок кода, в котором возникает ошибка, вероятно:

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 нигде не определен (подсказка: об этом сообщала ошибка компиляции).Как сказал Себастьян, it обычно используется в крышках;то, что вы определили здесь, является функцией.Предположительно, вы хотели использовать results (или что-то еще) вместо it здесь.

Я предполагаю, что некоторые вещи в вашем коде (например, открытие / закрытие комментариев) не были там ибыли добавлены между тем, когда вы увидели ошибку и когда вы опубликовали код.В противном случае вы получите другие ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...