HttpServletResponse response = new MockHttpServletResponse();
ModelAndView mv = mc.handleRequest(request, response);
assertTrue("returned correct view name: expected '" + formView + "', not '" + mv.getViewName() + "'",
mv.getViewName().equals(formView));
IndexedTestBean bean = (IndexedTestBean) mv.getModel().get(mc.getCommandName());
assertTrue("model is non null", bean != null);
assertEquals("name3", bean.getArray()[0].getName());
assertEquals("name1", ((TestBean) bean.getList().get(0)).getName());
Errors errors = (Errors) mv.getModel().get(BindException.MODEL_KEY_PREFIX + mc.getCommandName());
assertTrue("errors returned in model", errors != null);
assertTrue("2 errors", errors.getErrorCount() == 2);
FieldError fe1 = errors.getFieldError("array[1].age");
assertTrue("Saved invalid value", fe1.getRejectedValue().equals("name2"));
assertTrue("Correct field", fe1.getField().equals("array[1].age"));
FieldError fe2 = errors.getFieldError("list[1].age");
assertTrue("Saved invalid value", fe2.getRejectedValue().equals("name0"));
assertTrue("Correct field", fe2.getField().equals("list[1].age"));
assertEquals("listobj", bean.getList().get(2));
assertEquals("mapobj1", bean.getMap().get("key1"));
assertEquals("mapobj2", bean.getMap().get("key3"));
}