Apache 的 BeanUtils 出现问题

发布于 2024-10-31 14:18:15 字数 881 浏览 3 评论 0 原文

我正在尝试在 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;
        }
    }
}

当我运行此命令时,我收到一个 InvocableTargetException,显示“无法设置名称”。此外,当我将属性字符串设置为“名称”时,我没有收到错误,但未设置名称。

谁能指出我哪里出错了的正确方向?

I'm trying to set a property in a bean and I cant seem to get BeanUtils to work...

Heres a small example of the problem I am getting.

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;
        }
    }
}

When I run this I get an InvocationTargetException, saying "Cannot set name" Also when I the property string to "Name", I don't get the error, BUT the name isn't set.

Can anyone point me in the right direction as to where I'm going wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不如归去 2024-11-07 14:18:15

去掉 Bean 类的私有属性。由于 BeanUtils 使用反射,它无法访问“setName”方法。之所以可以正常访问私有内部类,是因为java编译器做了一些特殊的技巧来允许你访问。但由于 BeanUtils 没有使用这些技巧,所以它不能。

take the private attribute off of the Bean class. As BeanUtils is using reflection, it can't get access to the method 'setName'. The reason why you can access a private inner class normally, is that the java compiler does special tricks to allow you access. But since BeanUtils isn't using those tricks, it can't.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文