Grails MissingPropertyException

Я получаю странную ошибку, которая заставила меня повесить трубку все утро. У меня есть приложение Grails с классом Person, которое выглядит так:

class Person {
        String id
    Date   lastUpdated
    String note
    String lastName
    String firstName
    String middleName
    String facility
    ...
}

В моем контроллере у меня есть закрытие для получения модели:

def personDetail = {
    Person person = new Person()
    ...
    List<Person> personSearchList = session.getAttribute("searchResults")
    Person selectedSearchPerson = selectedSearchPersonList.find { it.id == selectedID }
    person.firstName = selectedSearchPerson.firstName
    person.lastName = selectedSearchPerson.lastName
    person.middleName = selectedSearchPerson.middleName
    person.facility = selectedSearchPerson.facility
    ...
    return [person:person]
}

Вчера этот код работал нормально. Однако сегодня утром, без внесения каких-либо изменений (я даже пытался вернуться к более старым представлениям svn), я получаю следующую ошибку, когда я нажимаю ссылку g: для отображения gsp DetailController:

groovy.lang.MissingPropertyException: No such property: facility for class: org.icf.Person
at org.bjc.icf.DetailController$_closure3.doCall(DetailController.groovy:33)
at org.bjc.icf.DetailController$_closure3.doCall(DetailController.groovy)
at java.lang.Thread.run(Thread.java:619)

Я пытался найти решение, что может вызвать эту ошибку в Интернете, но я ничего не могу найти. Кто-нибудь знает, почему я мог внезапно получить MissingPropertyExceptions в ранее работающем коде (и да, я проверил, чтобы убедиться, что свойство все еще находится в классе).


person Mike Caputo    schedule 12.07.2011    source источник


Ответы (1)


Попробуйте запустить grails clean — иногда инкрементная компиляция завершается неудачей, поэтому принудительная полная компиляция часто устраняет такие странные проблемы, как эта.

person Burt Beckwith    schedule 12.07.2011
comment
Спасибо Берт. Я пытался очистить несколько раз раньше (включая перезагрузку компьютера!), но это не сработало. Что сработало, так это запуск вашего предложения из командной строки (вместо STS IDE). - person Mike Caputo; 12.07.2011
comment
Правильно: очистка проекта в STS или другой среде IDE просто очищает его скомпилированные классы, но они не совпадают с теми, которые Grails компилирует для run-app. Поэтому, когда run-app ведет себя странно, запустите grails clean, а когда IDE не работает, очистите проект. - person Burt Beckwith; 12.07.2011