Конфигурация бина Grails в resources.groovy завершается неудачей в Eclipse STS - PullRequest
0 голосов
/ 10 августа 2011

Мы используем Eclipse STS для простого проекта Grails. Мы начали с чего-то простого, чтобы понять основы, и это примерно настолько просто, насколько это возможно. Проект имеет простой контроллер и Java-бин, подключенный через resources.groovy. Независимо от того, что мы делаем, кажется, что мы не можем правильно подключить bean-компонент, Grails жалуется, что свойство bean-компонента недоступно для записи или может не иметь метода получения / установки ....

/* TestBean.groovy */
    class TestBean {    
        def message 
        String getMessage(){
            return message
        }
    }

.

/* resources.groovy */
import com.ofi.test.TestBean;

beans = {   
    helloWorldBean( TestBean){
        message = "HelloWorld"
    }   
}

.

/* TestController */
class TestController {

    def index = { }

    def helloWorldBean
    def show = {
        def message = helloWorldBean.message
        render message
    }
}

.

/* UrlMappings.groovy */
class UrlMappings {    
    static mappings = {

        "/test/$var"(controller:"Test"){
            action = [GET: "get"]
        }   
    }

.

Проект компилируется, но мы получаем следующее сообщение об ошибке, когда приложение загружается в Eclipse (мы даже не можем добраться до контроллера, конфигурация TestBean не выполняется)

2011-08-10 11:18:55,252 [main] ERROR context.GrailsContextLoader  - Error executing bootstraps: Error creating bean with name 'helloWorldBean': Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'message' of bean class [com.ofi.test.TestBean]: Bean property 'message' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'helloWorldBean': Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'message' of bean class [com.ofi.test.TestBean]: Bean property 'message' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
    at org.grails.tomcat.TomcatServer.start(TomcatServer.groovy:212)
    at grails.web.container.EmbeddableServer$start.call(Unknown Source)
    at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy:158)
    at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy)
    at _GrailsSettings_groovy$_run_closure10.doCall(_GrailsSettings_groovy:280)
    at _GrailsSettings_groovy$_run_closure10.call(_GrailsSettings_groovy)
    at _GrailsRun_groovy$_run_closure5.doCall(_GrailsRun_groovy:149)

Ответы [ 2 ]

2 голосов
/ 10 августа 2011

Поскольку ваш bean-компонент - groovy bean , вам даже не нужны средства доступа.Следующее должно быть в порядке:

class TestBean {
    def message
}

В вашем случае, вероятно, ошибка возникает, потому что поле message имеет тип def, а ваш метод доступа - String.Если у вас там есть аксессор, попробуйте ввести их так же.

0 голосов
/ 30 декабря 2014

Вы можете добавить больше полей в классе Бина и использовать их в Контроллере как-

class TestBean {

    static constraints = {
    }

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