Beanutils.getArrayProperty throws NoSuchMethodException for valid method

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Beanutils.getArrayProperty throws NoSuchMethodException for valid method

Owen Funkhouser
I'm getting an odd problem when executing the Beanutils.getArrayProperty
  on an attribute that I know exists.  See the example below
(TestClass.java and TestBean.java).  What am I doing wrong?

,java.lang.NoSuchMethodException: Unknown property 'vTRate1'
         at
org.apache.commons.beanutils.PropertyUtils.getSimpleProperty(PropertyUtils.java:1175)
         at
org.apache.commons.beanutils.PropertyUtils.getNestedProperty(PropertyUtils.java:772)
         at
org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:801)
         at
org.apache.commons.beanutils.BeanUtils.getArrayProperty(BeanUtils.java:450)
         at com.dyn.beantest.TestClass.print(TestClass.java:16)
         at com.dyn.beantest.TestClass.main(TestClass.java:46)


TestClass.java:
package com.dyn.beantest;

import java.io.PrintStream;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import org.apache.commons.beanutils.BeanUtils;

public class TestClass {
    public TestClass() {
    }

    public void print(TestBean theBean) {
       try {
          List exportFields = TestBean.getAttributeList();
          for (int j = 0; j < exportFields.size(); j++) {
             String[] val = BeanUtils.getArrayProperty(
                       theBean, (String) exportFields.get(j));
             if (null != val) {
                for (int k = 0; k < val.length; k++) {
                   String value = null != val[k] ? val[k] : "";
                   System.out.print(value);
                   if ((k + 1) < val.length) {
                      System.out.print(",");
                   }
                }
             }
             if ((j + 1) < exportFields.size()) {
                System.out.print(",");
             }
          }
       } catch (IllegalAccessException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
       } catch (InvocationTargetException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
       } catch (NoSuchMethodException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
       }
    }

    public static void main(String[] args) {
       TestBean myBean = new TestBean();
       TestClass thisTest = new TestClass();
       thisTest.print(myBean);
    }
}


TestBean.java:
package com.dyn.beantest;

import java.util.LinkedList;
import java.util.List;

public class TestBean {
    private String testName;
    private String vTRate1;
    private String vTRate1Check;

    public TestBean() {
    }

    public TestBean(String testName) {
       this.testName = testName;
    }

    public static List getAttributeList() {
       List attributeList = new LinkedList();
       attributeList.add("testName");
       attributeList.add("vTRate1");
       attributeList.add("vTRate1Check");
       return attributeList;
    }

    public String getTestName() {
       return testName;
    }

    public void setTestName(String testName) {
       this.testName = testName;
    }

    public String getVTRate1() {
       return vTRate1;
    }

    public void setVTRate1(String rate1) {
       vTRate1 = rate1;
    }

    public String getVTRate1Check() {
       return vTRate1Check;
    }

    public void setVTRate1Check(String rate1Check) {
       vTRate1Check = rate1Check;
    }
}



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]