Проблема с BeanUtils от Apache - PullRequest
1 голос
/ 13 апреля 2011

Я пытаюсь установить свойство в bean-компоненте и не могу заставить BeanUtils работать ...

Вот небольшой пример проблемы, которую я получаю.

public class Example
{
    public static void main(String[] args)
    {
        Example example = new Example();
        example.run();
    }
    public void run()
    {
        try
        {
            Bean bean = new Bean();
            BeanUtils.setProperty(bean, "name", "myName");
            System.out.println(bean.getName());
        } catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }
    private class Bean
    {
        private String name;

        public String getName()
        {
            return name;
        }

        public void setName(String name)
        {
            this.name = name;
        }
    }
}

Когда я запускаю это, я получаю InvocationTargetException, говоря: «Невозможно установить имя». Также, когда я присваиваю строке свойства значение «Имя», я не получаю ошибку, НО имя не установлено.

Кто-нибудь может указать мне в правильном направлении, где я иду не так?

1 Ответ

3 голосов
/ 13 апреля 2011

убрать атрибут private из класса Bean. Поскольку BeanUtils использует отражение, он не может получить доступ к методу setName. Причина, по которой вы можете получить доступ к закрытому внутреннему классу, заключается в том, что java-компилятор делает специальные трюки, чтобы разрешить вам доступ. Но поскольку BeanUtils не использует эти трюки, он не может.

...