Accueil > Java > [Struts] Populate Potential new Element in an array

[Struts] Populate Potential new Element in an array

28/01/2009

    /**
     * Populate the bean prefix using request parameters.
     * @param request The HTTP request
     * @param form ..
     * @param arrayKey ..
     * @param arrayItemClazz ..
     */
    public static void getPotentialNewElement(final HttpServletRequest request, final Object beanForm, final String arrayKey, final Class arrayItemClazz) throws Exception {
        Object array = ReflectHelper.invokeGetter(beanForm, arrayKey);
        if (array.getClass().isArray()) {
            int offsetIndex = Array.getLength(array);
            Object newArrayElement = null;
            List getters = ReflectHelper.getGettersRecursivly(arrayItemClazz);
            do {
                for (Iterator iter = getters.iterator(); iter.hasNext();) {
                    Method getter = (Method) iter.next();
                    if (getter.getReturnType().getName().startsWith("java.lang.String")) {
                        String getterKey = ReflectHelper.getFieldName(getter);
                        String value = request.getParameter(arrayKey + "[" + offsetIndex + "]." + getter);
                        if (value != null) {
                            if (newArrayElement == null) {
                                newArrayElement = ReflectHelper.newInstance(arrayItemClazz.getName());
                            }
                            ReflectHelper.invokeSetter(newArrayElement, getterKey, value, String.class);
                        }
                    }
                }
                if (newArrayElement != null) {
                    Object newArray = Array.newInstance(arrayItemClazz, offsetIndex + 1);
                    for (int i = 0; i < offsetIndex; ++i) {
                        Array.set(newArray, i, Array.get(array, i));
                    }
                    offsetIndex++;
                    Array.set(newArray, offsetIndex, newArrayElement);
                }
            } while (newArrayElement != null);
        }
    }

Java

Les commentaires sont fermés.