Index: D:/Programs/iBatis/trunk/mapper/mapper2/src/com/ibatis/common/beans/BaseProbe.java =================================================================== --- D:/Programs/iBatis/trunk/mapper/mapper2/src/com/ibatis/common/beans/BaseProbe.java (revision 290116) +++ D:/Programs/iBatis/trunk/mapper/mapper2/src/com/ibatis/common/beans/BaseProbe.java (working copy) @@ -79,7 +79,12 @@ } else { throw new ProbeException("The '" + name + "' property of the " + object.getClass().getName() + " class is not a List or Array."); } - + + int index = indexedName.indexOf("]."); + if (index >= 0) { + String subName = indexedName.substring(index + 2); + value = getProperty(value, subName); + } } catch (ProbeException e) { throw e; } catch (Exception e) { @@ -103,10 +108,13 @@ list = object; } + Object targetObject = null; if (list instanceof List) { - value = ((List) list).get(i).getClass(); + targetObject = ((List) list).get(i); + value = targetObject.getClass(); } else if (list instanceof Object[]) { - value = ((Object[]) list)[i].getClass(); + targetObject = ((Object[]) list)[i]; + value = targetObject.getClass(); } else if (list instanceof char[]) { value = Character.class; } else if (list instanceof boolean[]) { @@ -127,6 +135,12 @@ throw new ProbeException("The '" + name + "' property of the " + object.getClass().getName() + " class is not a List or Array."); } + int index = indexedName.indexOf("]."); + if (index >= 0) { + String subName = indexedName.substring(index + 2); + Object subObject = getProperty(targetObject, subName); + value = subObject.getClass(); + } } catch (ProbeException e) { throw e; } catch (Exception e) {