Class c1 = Class.forName(form.getClass().getName());
        Method m1 = c2.getMethod("set" + field, value.getClass());
        Object obj1 = m2.invoke(form, value);我想差不多你就是想要这个吧

解决方案 »

  1.   

    樓上說的肯定可以做到。下面的源代碼是從struts copy出來的.
    功能就是將value賦給bean
    properties中key是reqeust的name.
        public static void populate(Object bean, Map properties)
            throws IllegalAccessException, InvocationTargetException {        if ((bean == null) || (properties == null))
                return;        /*
            if (debug >= 1)
                System.out.println("BeanUtils.populate(" + bean + ", " +
                                   properties + ")");
            */        // Loop through the property name/value pairs to be set
            Iterator names = properties.keySet().iterator();
            while (names.hasNext()) {            // Identify the property name and value(s) to be assigned
                String name = (String) names.next();
                if (name == null)
                    continue;
                Object value = properties.get(name); // String or String[]            
                if (debug >= 1)
                    System.out.println("  name='" + name + "', value.class='" +
                                       (value == null ? "NONE" :
                                       value.getClass().getName()) + "'");
                            // Get the property descriptor of the requested property (if any)
                PropertyDescriptor descriptor = null;
                try {
                    descriptor = PropertyUtils.getPropertyDescriptor(bean, name);
                } catch (Throwable t) {
                    /*
                    if (debug >= 1)
                        System.out.println("    getPropertyDescriptor: " + t);
                    */
                    descriptor = null;
                }
                if (descriptor == null) {
                    /*
                    if (debug >= 1)
                        System.out.println("    No such property, skipping");
                    */
                    continue;
                }
                /*
                if (debug >= 1)
                    System.out.println("    Property descriptor is '" +
                                       descriptor + "'");
                */            // Identify the relevant setter method (if there is one)
                Method setter = null;
                if (descriptor instanceof IndexedPropertyDescriptor)
                    setter = ((IndexedPropertyDescriptor) descriptor).
                        getIndexedWriteMethod();
                if (setter == null)
                    setter = descriptor.getWriteMethod();
                if (setter == null) {
                    /*
                    if (debug >= 1)
                        System.out.println("    No setter method, skipping");
                    */
                    continue;
                }
                Class parameterTypes[] = setter.getParameterTypes();
                /*
                if (debug >= 1)
                    System.out.println("    Setter method is '" +
                                       setter.getName() + "(" +
                                       parameterTypes[0].getName() +
                                       (parameterTypes.length > 1 ?
                                        ", " + parameterTypes[1].getName() : "" )
                                       + ")'");
                */
                Class parameterType = parameterTypes[0];
                if (parameterTypes.length > 1)
                    parameterType = parameterTypes[1];      // Indexed setter            // Convert the parameter value as required for this setter method
                Object parameters[] = new Object[1];
                if (parameterTypes[0].isArray()) {
                    if (value instanceof String) {
                        String values[] = new String[1];
                        values[0] = (String) value;
                        parameters[0] = ConvertUtils.convert((String[]) values,
                        parameterType);
                    } else if (value instanceof String[]) {
                        parameters[0] = ConvertUtils.convert((String[]) value,
                        parameterType);
                    } else {
                        parameters[0] = value;
                    }
                } else {
                    if (value instanceof String) {
                        parameters[0] = ConvertUtils.convert((String) value,
                        parameterType);
                    } else if (value instanceof String[]) {
                        parameters[0] = ConvertUtils.convert(((String[]) value)[0],
                        parameterType);
                    } else {
                        parameters[0] = value;
                    }
                }            // Invoke the setter method
                /*
                if (debug >= 1)
                    System.out.println("    Setting to " +
                                       (parameters[0] == null ? "NULL" :
                                        "'" + parameters[0] + "'"));
                */
                try {
                    PropertyUtils.setProperty(bean, name, parameters[0]);
                } catch (NoSuchMethodException e) {
                    /*
                    if (debug >= 1) {
                        System.out.println("    CANNOT HAPPEN: " + e);
                        e.printStackTrace(System.out);
                    }
                    */
                }        }        /*
            if (debug >= 1)
                System.out.println("============================================");
            */    }
      

  2.   

    public void setFormFiels (ActionForm form,String field,String value) throws IllegalAccessException, InvocationTargetException 
    {
       try{
        Class c1 = Class.forName(form.getClass().getName());
        Method m1 = c1.getMethod("set" + field, value.getClass());
        Object obj1 = m1.invoke(form, value);
        }catch (Exception e)
       {
       
        }
       
    }是这样写吗
      

  3.   

    最好的办法还是用数据库中表的在邦定。这样子没有你们写的这么麻烦,一句话就可以解决问题。
    在form中加一个数据库表的邦定就可以了。
    比如下面代码所示:
             public TaxEnrolActionForm() {
    mrs = new RowSet();
    DaoEJBBean Dao=new DaoEJBBean();
    RowSet result=null;
    CallService objTaxEnrol=new CallService();
    try{
    String strSQL="select * from BDSIC_CIRCS_ENREGISTER";
    mrs=Dao.runSQLReturnRS(strSQL);
    //mrs=objTaxEnrol.getTableStruct("result");
    mrs.addEmptyRow();
    mrs.moveLast();
    }
    不知道我说的对不对啊?*_*
      

  4.   

    getMethod(String name, Class[] parameterTypes),所以这样写c1.getMethod("set" + field, value.getClass());有错啊
    还有invoke(Object obj, Object[] args)