Copiar parametros request para Objeto

Olá,

eu estou fazendo manutenção em um sistema, e vou precisar fazer umas novas telinhas…

eu queria copiar os parâmetros da request para um objeto, utilizando reflexão para ficar mais simples…

só de curioso, qual framework hoje o pessoal utiliza para fazer estas coisas? jakarta beanutils, OGNL, MVEL ? tem algum carinha que já tem isto pronto ?

obrigado


<%-- 
    Document   : index
    Created on : 16/10/2012, 18:16:05
    Author     : pirm
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
        <form action="Servlet" method="POST">
            <!--tipos primitivos e String-->
            <input type="text" name="pessoa.bytee" value="1"/><br/>
            <input type="text" name="pessoa.shortt" value="1"/><br/>
            <input type="text" name="pessoa.intt" value="1"/><br/>
            <input type="text" name="pessoa.longg" value="1"/><br/>
            <input type="text" name="pessoa.floatt" value="1"/><br/>
            <input type="text" name="pessoa.doublee" value="1"/><br/>
            <input type="text" name="pessoa.charr" value="x"/><br/>
            <input type="text" name="pessoa.booleann" value="true"/><br/>
            <input type="text" name="pessoa.string" value="oi"/><br/>
            
            <!--vetores -->
            <input type="text" name="pessoa.arrayByte" value="1"/><br/>
            <input type="text" name="pessoa.arrayShort" value="1"/><br/>
            <input type="text" name="pessoa.arrayInt" value="1"/><br/>
            <input type="text" name="pessoa.arrayLong" value="1"/><br/>
            <input type="text" name="pessoa.arrayFloat" value="1"/><br/>
            <input type="text" name="pessoa.arrayDouble" value="1"/><br/>
            <input type="text" name="pessoa.arrayChar" value="x"/><br/>
            <input type="text" name="pessoa.arrayBoolean" value="true"/><br/>
            <input type="text" name="pessoa.arrayString" value="oi"/><br/>
            
            <input type="text" name="pessoa.arrayByte" value="1"/><br/>
            <input type="text" name="pessoa.arrayShort" value="1"/><br/>
            <input type="text" name="pessoa.arrayInt" value="1"/><br/>
            <input type="text" name="pessoa.arrayLong" value="1"/><br/>
            <input type="text" name="pessoa.arrayFloat" value="1"/><br/>
            <input type="text" name="pessoa.arrayDouble" value="1"/><br/>
            <input type="text" name="pessoa.arrayChar" value="x"/><br/>
            <input type="text" name="pessoa.arrayBoolean" value="true"/><br/>
            <input type="text" name="pessoa.arrayString" value="oi"/><br/>
            
            <input type="text" name="pessoa.arrayByte" value="1"/><br/>
            <input type="text" name="pessoa.arrayShort" value="1"/><br/>
            <input type="text" name="pessoa.arrayInt" value="1"/><br/>
            <input type="text" name="pessoa.arrayLong" value="1"/><br/>
            <input type="text" name="pessoa.arrayFloat" value="1"/><br/>
            <input type="text" name="pessoa.arrayDouble" value="1"/><br/>
            <input type="text" name="pessoa.arrayChar" value="x"/><br/>
            <input type="text" name="pessoa.arrayBoolean" value="true"/><br/>
            <input type="text" name="pessoa.arrayString" value="oi"/><br/>
            
            <!-- Utilizando Collections -->
            <input type="text" name="pessoa.list" value="oi"/><br/>
            <input type="text" name="pessoa.set" value="oi1"/><br/>
            <input type="text" name="pessoa.map" value="oi"/><br/>
            
            <input type="text" name="pessoa.list" value="oi"/><br/>
            <input type="text" name="pessoa.set" value="oi2"/><br/>
            <input type="text" name="pessoa.map" value="oi"/><br/>
            
            <input type="text" name="pessoa.list" value="oi"/><br/>
            <input type="text" name="pessoa.set" value="oi3"/><br/>
            <input type="text" name="pessoa.map" value="oi"/><br/>
            
            <!-- Date -->
            <input type="text" name="pessoa.date.date" value="24"/><br/>
            <input type="text" name="pessoa.date.month" value="0"/><br/>
            <input type="text" name="pessoa.date.year" value="112"/><br/>
            
            <!-- javaBean -->
            <input type="text" name="pessoa.pessoa.bytee" value="1"/><br/>
            <input type="text" name="pessoa.pessoa.shortt" value="1"/><br/>
            <input type="text" name="pessoa.pessoa.intt" value="1"/><br/>
            
            <!-- String com multiplos parameters -->
            <input type="text" name="pessoa.string" value="oi"/><br/>
            <input type="text" name="pessoa.string" value="oi"/><br/>
            <input type="text" name="pessoa.string" value="oi"/><br/>
            <input type="text" name="pessoa.string" value="oi"/><br/>
            
            <input type="submit" value="Enviar"/>
        </form>
    </body>
</html>

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.projeto.controller;

import java.io.Serializable;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 *
 * @author pirm
 */
public class Pessoa implements Serializable {

    private byte bytee;
    private short shortt;
    private int intt;
    private long longg;
    private float floatt;
    private double doublee;
    private char charr;
    private boolean booleann;
    private String string;
    private byte[] arrayByte;
    private short[] arrayShort;
    private int[] arrayInt;
    private long[] arrayLong;
    private float[] arrayFloat;
    private double[] arrayDouble;
    private char[] arrayChar;
    private boolean[] arrayBoolean;
    private String[] arrayString;
    private List list;
    private Set set;
    private Map map;
    private Date date;
    private Pessoa pessoa;

    public Pessoa() {
    }

    public byte getBytee() {
        return bytee;
    }

    public void setBytee(byte bytee) {
        this.bytee = bytee;
    }

    public short getShortt() {
        return shortt;
    }

    public void setShortt(short shortt) {
        this.shortt = shortt;
    }

    public int getIntt() {
        return intt;
    }

    public void setIntt(int intt) {
        this.intt = intt;
    }

    public long getLongg() {
        return longg;
    }

    public void setLongg(long longg) {
        this.longg = longg;
    }

    public float getFloatt() {
        return floatt;
    }

    public void setFloatt(float floatt) {
        this.floatt = floatt;
    }

    public double getDoublee() {
        return doublee;
    }

    public void setDoublee(double doublee) {
        this.doublee = doublee;
    }

    public char getCharr() {
        return charr;
    }

    public void setCharr(char charr) {
        this.charr = charr;
    }

    public boolean isBooleann() {
        return booleann;
    }

    public void setBooleann(boolean booleann) {
        this.booleann = booleann;
    }

    public String getString() {
        return string;
    }

    public void setString(String string) {
        this.string = string;
    }

    public byte[] getArrayByte() {
        return arrayByte;
    }

    public void setArrayByte(byte[] arrayByte) {
        this.arrayByte = arrayByte;
    }

    public short[] getArrayShort() {
        return arrayShort;
    }

    public void setArrayShort(short[] arrayShort) {
        this.arrayShort = arrayShort;
    }

    public int[] getArrayInt() {
        return arrayInt;
    }

    public void setArrayInt(int[] arrayInt) {
        this.arrayInt = arrayInt;
    }

    public long[] getArrayLong() {
        return arrayLong;
    }

    public void setArrayLong(long[] arrayLong) {
        this.arrayLong = arrayLong;
    }

    public float[] getArrayFloat() {
        return arrayFloat;
    }

    public void setArrayFloat(float[] arrayFloat) {
        this.arrayFloat = arrayFloat;
    }

    public double[] getArrayDouble() {
        return arrayDouble;
    }

    public void setArrayDouble(double[] arrayDouble) {
        this.arrayDouble = arrayDouble;
    }

    public char[] getArrayChar() {
        return arrayChar;
    }

    public void setArrayChar(char[] arrayChar) {
        this.arrayChar = arrayChar;
    }

    public boolean[] getArrayBoolean() {
        return arrayBoolean;
    }

    public void setArrayBoolean(boolean[] arrayBoolean) {
        this.arrayBoolean = arrayBoolean;
    }

    public String[] getArrayString() {
        return arrayString;
    }

    public void setArrayString(String[] arrayString) {
        this.arrayString = arrayString;
    }

    public List getList() {
        return list;
    }

    public void setList(List list) {
        this.list = list;
    }

    public Set getSet() {
        return set;
    }

    public void setSet(Set set) {
        this.set = set;
    }

    public Map getMap() {
        return map;
    }

    public void setMap(Map map) {
        this.map = map;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public Pessoa getPessoa() {
        return pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }
    
    @Override
    public String toString() {
        StringBuilder stringBuilder = new StringBuilder();

        stringBuilder.append("\n----------------------------------------------\n\nPessoa:");
        stringBuilder.append("\nbyte: ").append(bytee);
        stringBuilder.append("\nshort: ").append(shortt);
        stringBuilder.append("\nint: ").append(intt);
        stringBuilder.append("\nlong: ").append(longg);
        stringBuilder.append("\nfloat: ").append(floatt);
        stringBuilder.append("\ndouble: ").append(doublee);
        stringBuilder.append("\nchar: ").append(charr);
        stringBuilder.append("\nboolean: ").append(booleann);
        stringBuilder.append("\nString: ").append(string);
        if (arrayByte != null) {
            stringBuilder.append("\narrayByte: ");
            for (byte e : arrayByte) {
                stringBuilder.append(e).append(",");
            }
        }
        if (arrayShort != null) {
            stringBuilder.append("\narrayShort: ");
            for (short e : arrayShort) {
                stringBuilder.append(e).append(",");
            }
        }
        if (arrayInt != null) {
            stringBuilder.append("\narrayInt: ");
            for (int e : arrayInt) {
                stringBuilder.append(e).append(",");
            }
        }
        if (arrayLong != null) {
            stringBuilder.append("\narrayLong: ");
            for (long e : arrayLong) {
                stringBuilder.append(e).append(",");
            }
        }
        if (arrayFloat != null) {
            stringBuilder.append("\narrayFloat: ");
            for (float e : arrayFloat) {
                stringBuilder.append(e).append(",");
            }
        }
        if (arrayDouble != null) {
            stringBuilder.append("\narrayDouble: ");
            for (double e : arrayDouble) {
                stringBuilder.append(e).append(",");
            }
        }
        if (arrayChar != null) {
            stringBuilder.append("\narrayChar: ");
            for (char e : arrayChar) {
                stringBuilder.append(e).append(",");
            }
        }
        if (arrayBoolean != null) {
            stringBuilder.append("\narrayBoolean: ");
            for (boolean e : arrayBoolean) {
                stringBuilder.append(e).append(",");
            }
        }
        if (arrayString != null) {
            stringBuilder.append("\narrayString: ");
            for (String e : arrayString) {
                stringBuilder.append(e).append(",");
            }
        }
        if (list != null) {
            stringBuilder.append("\nlist: ");
            for (Object o : list) {
                stringBuilder.append(o.toString()).append(",");
            }
        }
        if (set != null) {
            stringBuilder.append("\nset: ");
            Iterator iterator = set.iterator();
            while (iterator.hasNext()) {
                Object o = iterator.next();
                stringBuilder.append(o.toString()).append(",");
            }
        }
        if (map != null) {
            stringBuilder.append("\nmap: ");
            Iterator iterator = map.keySet().iterator();
            while (iterator.hasNext()) {
                Object o = iterator.next();
                stringBuilder.append(o.toString()).append(",");
            }
        }
        if (date != null) {
            stringBuilder.append("\ndate: ").append(date.getDate()).append("/").append((date.getMonth() + 1)).append("/").append((date.getYear() + 1900));
        }
        if (pessoa != null) {
            stringBuilder.append(pessoa);
        }
        stringBuilder.append("\n----------------------------------------------");
        return stringBuilder.toString();
    }
}

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.projeto.controller;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author pirm
 */
@WebServlet(name = "Servlet", urlPatterns = {"/Servlet"})
public class Servlet extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        Pessoa pessoa = (Pessoa) JavaBeanUtils.requestToObject(Pessoa.class, request);
        System.out.println(pessoa);
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.projeto.controller;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;

/**
 *
 * @author pirm
 */
public class JavaBeanUtils {

    public static Object requestToObject(Class classe, HttpServletRequest request) {
        Object object = null;
        try {
            object = classe.getConstructor().newInstance();
        } catch (Exception ex) {
            Logger.getLogger(JavaBeanUtils.class.getName()).log(Level.SEVERE, null, ex);
        }

        Enumeration<String> enumerationString = request.getParameterNames();
        while (enumerationString.hasMoreElements()) {
            String stringParameterName = (String) enumerationString.nextElement();
            StringBuilder stringBuilderAttribute = new StringBuilder();
            for (int i = 0; i < stringParameterName.length(); i++) {
                stringBuilderAttribute.append(stringParameterName.charAt(i));
                if (stringBuilderAttribute.toString().equals(classe.getSimpleName().toLowerCase())) {
                    /*
                     * Quando o nome do stringParameterName for igual ao nome da Class
                     */
                    System.out.println("Classe: " + stringBuilderAttribute);
                    stringBuilderAttribute = new StringBuilder();
                    Object objectReturned = object;
                    for (int j = (i + 2); j < stringParameterName.length(); j++) {
                        char c = stringParameterName.charAt(j);
                        if (c != '.') {
                            stringBuilderAttribute.append(c);
                        } else {
                            /*
                             * É UM OBJETO
                             */
                            System.out.println("MÉTODO: faz(isObject, " + objectReturned.getClass() + ", " + stringBuilderAttribute + ", " + stringParameterName + ", map)");
                            objectReturned = faz(true, objectReturned, stringBuilderAttribute.toString(), stringParameterName, request);
                            stringBuilderAttribute = new StringBuilder();
                        }
                    }
                    /*
                     * É UM ATRIBUTO
                     */
                    System.out.println("MÉTODO: faz(isAttribute, " + objectReturned.getClass() + ", " + stringBuilderAttribute + ", " + stringParameterName + ", map)");
                    faz(false, objectReturned, stringBuilderAttribute.toString(), stringParameterName, request);
                }
            }
        }
        return object;
    }

    private static Object faz(boolean isObject, Object object, String attribute, String parameterName, HttpServletRequest request) {
        if (isObject) {
            /*
             * É UM OBJETO JAVABEAN
             */
            System.out.println("objeto:atributo: " + attribute);
            System.out.println("Checando se o objeto é nulo ... para criar nova instancia !");
            Object objectAttribute = javaBeanGetAttribute(object, attribute);

            if (objectAttribute == null) {
                System.out.println("Objecto é nulo ... criando objeto !");
                Object objectNew = objectAndAttributeToAttributeObject(object, attribute);
                setAttribute(object, attribute, objectNew);
                return objectNew;
            } else {
                System.out.println("Objecto não é nulo ... retornando objeto através do método");
                return javaBeanGetAttribute(object, attribute);
            }
        } else {
            /*
             * É UM ATRIBUTO
             */
            System.out.println("atributo: " + attribute);

            String[] arrayStringAttributeValue = request.getParameterValues(parameterName);

            System.out.println("attribute value: ");
            for (String string : arrayStringAttributeValue) {
                System.out.print("," + string);
            }
            setAttribute(object, attribute, arrayStringAttributeValue);
        }
        return null;
    }

    private static Object javaBeanGetAttribute(Object object, String attribute) {
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("get");
        for (int i = 0; i < attribute.length(); i++) {
            if (i == 0) {
                Character c = attribute.charAt(i);
                stringBuilder.append(c.toString().toUpperCase());
            } else {
                stringBuilder.append(attribute.charAt(i));
            }
        }
        try {
            return object.getClass().getDeclaredMethod(stringBuilder.toString()).invoke(object);
        } catch (Exception ex) {
            Logger.getLogger(JavaBeanUtils.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

    private static void javaBeanSetAttribute(Object object, String attribute, Object value) {
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("set");
        for (int i = 0; i < attribute.length(); i++) {
            if (i == 0) {
                Character c = attribute.charAt(i);
                stringBuilder.append(c.toString().toUpperCase());
            } else {
                stringBuilder.append(attribute.charAt(i));
            }
        }
        Method[] arrayMethod = object.getClass().getDeclaredMethods();
        Class classField = null;
        for (Method method : arrayMethod) {
            if (method.getName().equals(stringBuilder.toString())) {
                Class[] arrayClassTypes = method.getParameterTypes();
                classField = arrayClassTypes[0];
            }
        }
        try {
            object.getClass().getDeclaredMethod(stringBuilder.toString(), classField).invoke(object, value);
        } catch (Exception ex) {
            Logger.getLogger(JavaBeanUtils.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    private static Object objectAndAttributeToAttributeObject(Object object, String attribute) {
        Field[] arrayField = object.getClass().getDeclaredFields();
        Object objectNew;
        for (Field field : arrayField) {
            if (field.getName().equals(attribute)) {
                try {
                    Class classField = field.getType();

                    if (classField.equals(List.class)) {
                        classField = ArrayList.class;
                    } else if (classField.equals(Map.class)) {
                        classField = HashMap.class;
                    }
                    objectNew = classField.getConstructor().newInstance();
                    System.out.println("new Instance:" + classField.getSimpleName());
                    return objectNew;
                } catch (Exception ex) {
                    Logger.getLogger(JavaBeanUtils.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
        return null;
    }

    private static void setAttribute(Object object, String attribute, Object value) {
        System.out.println("metodo: setAttribute(" + object.getClass().getSimpleName() + ", " + attribute + ", " + value.getClass().getSimpleName() + ")");

        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("set");
        for (int i = 0; i < attribute.length(); i++) {
            if (i == 0) {
                Character c = attribute.charAt(i);
                stringBuilder.append(c.toString().toUpperCase());
            } else {
                stringBuilder.append(attribute.charAt(i));
            }
        }
        System.out.println("metodo a comparar: " + stringBuilder);

        Method[] arrayMethod = object.getClass().getDeclaredMethods();
        for (Method method : arrayMethod) {
            if (method.getName().equals(stringBuilder.toString())) {
                System.out.println("Classe possui o metodo ..." + method.getName());
                Class[] arrayClassTypes = method.getParameterTypes();
                try {
                    Object objectAttribute = javaBeanGetAttribute(object, attribute);
                    String stringClassField = arrayClassTypes[0].getSimpleName();
                    System.out.println("inserindo objeto do tipo ... " + stringClassField + " em " + method.getName());

                    if (stringClassField.equals("byte") || stringClassField.equals("Byte")) {
                        String[] arrayStringValue = (String[]) value;
                        String stringValue = arrayStringValue[0];
                        javaBeanSetAttribute(object, attribute, Byte.parseByte(stringValue));
                    } else if (stringClassField.equals("short") || stringClassField.equals("Short")) {
                        String[] arrayStringValue = (String[]) value;
                        String stringValue = arrayStringValue[0];
                        javaBeanSetAttribute(object, attribute, Short.parseShort(stringValue));
                    } else if (stringClassField.equals("int") || stringClassField.equals("Integer")) {
                        String[] arrayStringValue = (String[]) value;
                        String stringValue = arrayStringValue[0];
                        javaBeanSetAttribute(object, attribute, Integer.parseInt(stringValue));
                    } else if (stringClassField.equals("long") || stringClassField.equals("Long")) {
                        String[] arrayStringValue = (String[]) value;
                        String stringValue = arrayStringValue[0];
                        javaBeanSetAttribute(object, attribute, Long.parseLong(stringValue));
                    } else if (stringClassField.equals("float") || stringClassField.equals("Float")) {
                        String[] arrayStringValue = (String[]) value;
                        String stringValue = arrayStringValue[0];
                        javaBeanSetAttribute(object, attribute, Float.parseFloat(stringValue));
                    } else if (stringClassField.equals("double") || stringClassField.equals("Double")) {
                        String[] arrayStringValue = (String[]) value;
                        String stringValue = arrayStringValue[0];
                        javaBeanSetAttribute(object, attribute, Double.parseDouble(stringValue));
                    } else if (stringClassField.equals("char") || stringClassField.equals("Character")) {
                        String[] arrayStringValue = (String[]) value;
                        String stringValue = arrayStringValue[0];
                        javaBeanSetAttribute(object, attribute, stringValue.charAt(0));
                    } else if (stringClassField.equals("boolean") || stringClassField.equals("Boolean")) {
                        String[] arrayStringValue = (String[]) value;
                        String stringValue = arrayStringValue[0];
                        javaBeanSetAttribute(object, attribute, Boolean.parseBoolean(stringValue));
                    } else if (stringClassField.equals("String")) {
                        String[] arrayStringValue = (String[]) value;
                        String stringValue = arrayStringValue[0];
                        if (arrayStringValue.length > 1) {
                            StringBuilder stringBuilder1 = new StringBuilder();
                            for (int i = 0; i < arrayStringValue.length; i++) {
                                if (i != (arrayStringValue.length - 1)) {
                                    stringBuilder1.append(arrayStringValue[i]).append(",");
                                } else {
                                    stringBuilder1.append(arrayStringValue[i]);
                                }
                            }
                            stringValue = stringBuilder1.toString();
                        }
                        javaBeanSetAttribute(object, attribute, stringValue);
                    } else if (stringClassField.equals("byte[]") || stringClassField.equals("Byte[]")) {
                        String[] arrayString = (String[]) value;
                        byte[] array = new byte[arrayString.length];
                        for (int i = 0; i < arrayString.length; i++) {
                            array[i] = Byte.parseByte(arrayString[i]);
                        }
                        javaBeanSetAttribute(object, attribute, array);
                    } else if (stringClassField.equals("short[]") || stringClassField.equals("Short[]")) {
                        String[] arrayString = (String[]) value;
                        short[] array = new short[arrayString.length];
                        for (int i = 0; i < arrayString.length; i++) {
                            array[i] = Short.parseShort(arrayString[i]);
                        }
                        javaBeanSetAttribute(object, attribute, array);
                    } else if (stringClassField.equals("int[]") || stringClassField.equals("Integer[]")) {
                        String[] arrayString = (String[]) value;
                        int[] array = new int[arrayString.length];
                        for (int i = 0; i < arrayString.length; i++) {
                            array[i] = Integer.parseInt(arrayString[i]);
                        }
                        javaBeanSetAttribute(object, attribute, array);
                    } else if (stringClassField.equals("long[]") || stringClassField.equals("Long[]")) {
                        String[] arrayString = (String[]) value;
                        long[] array = new long[arrayString.length];
                        for (int i = 0; i < arrayString.length; i++) {
                            array[i] = Long.parseLong(arrayString[i]);
                        }
                        javaBeanSetAttribute(object, attribute, array);
                    } else if (stringClassField.equals("float[]") || stringClassField.equals("Float[]")) {
                        String[] arrayString = (String[]) value;
                        float[] array = new float[arrayString.length];
                        for (int i = 0; i < arrayString.length; i++) {
                            array[i] = Float.parseFloat(arrayString[i]);
                        }
                        javaBeanSetAttribute(object, attribute, array);
                    } else if (stringClassField.equals("double[]") || stringClassField.equals("Double[]")) {
                        String[] arrayString = (String[]) value;
                        double[] array = new double[arrayString.length];
                        for (int i = 0; i < arrayString.length; i++) {
                            array[i] = Double.parseDouble(arrayString[i]);
                        }
                        javaBeanSetAttribute(object, attribute, array);
                    } else if (stringClassField.equals("char[]") || stringClassField.equals("Character[]")) {
                        String[] arrayString = (String[]) value;
                        char[] array = new char[arrayString.length];
                        for (int i = 0; i < arrayString.length; i++) {
                            array[i] = arrayString[i].charAt(0);
                        }
                        javaBeanSetAttribute(object, attribute, array);
                    } else if (stringClassField.equals("boolean[]") || stringClassField.equals("Boolean[]")) {
                        String[] arrayString = (String[]) value;
                        boolean[] array = new boolean[arrayString.length];
                        for (int i = 0; i < arrayString.length; i++) {
                            array[i] = Boolean.parseBoolean(arrayString[i]);
                        }
                        javaBeanSetAttribute(object, attribute, array);
                    } else if (stringClassField.equals("String[]")) {
                        javaBeanSetAttribute(object, attribute, value);
                    } else if (stringClassField.equals("List") || stringClassField.equals("ArrayList")) {
                        List list = new ArrayList();
                        String[] arrayString = (String[]) value;
                        list.addAll(Arrays.asList(arrayString));
                        javaBeanSetAttribute(object, attribute, list);
                    } else if (stringClassField.equals("Set") || stringClassField.equals("HashSet")) {
                        Set set = new HashSet();
                        String[] arrayString = (String[]) value;
                        for(String string : arrayString){
                            set.add(string);
                        }
                        javaBeanSetAttribute(object, attribute, set);
                    } else if (stringClassField.equals("Map") || stringClassField.equals("HashMap")) {
                        Map map = new HashMap();
                        String[] arrayString = (String[]) value;
                        for (int i = 0; i < arrayString.length; i++) {
                            map.put(i, arrayString[i]);
                        }
                        javaBeanSetAttribute(object, attribute, map);
                    } else {
                        javaBeanSetAttribute(object, attribute, value);
                    }
                } catch (Exception ex) {
                    Logger.getLogger(JavaBeanUtils.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }
}

Seria mais fácil usar um Struts 2 ou o VRaptor. Provavelmente o Spring MVC também pode ajudar.

http://vraptor.caelum.com.br/pt/docs/guia-de-um-minuto/