2010-09-22 3 views
-5

Ниже приведен мой код. Здесь я получаю сообщение об ошибке «Нет такого свойства: оно для класса: emp.EmployeeController». Я думаю, что я делаю что-то неправильно здесь. Любые советы ??Ошибка Grails: Нет такого свойства: для класса:

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

ответ

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.

2

я бы второй leebutts ответ ... но только указатель, использование в это ключевое слово, как правило, ограничивается затворов ... так что вместо того, чтобы делать это в Java:

List l = []; 
for (Iterator i = l.iterator(); i.hasNext();) { 
    ...do something adressing List l at position i... 
} 

вы могли бы сделать это в заводных/Грааль:

list.each { it -> 
    ...do something with each object in the list (it)... 
} 

но вы должны действительно прочитать на заводных затворах в http://groovy.codehaus.org/Closures

0

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

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 здесь.

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

Смежные вопросы