@RequestMapping(method = RequestMethod.POST) public ModelAndView processSubmit( @ModelAttribute("findUser") FindUserFormCommand findUser, Errors errors, SessionStatus status) { new FindUserFormValidator().validate(findUser, errors); if (errors.hasErrors()) { return new ModelAndView("admin/FindUser", "findUser", findUser); } User user = new User(); boolean partialMatch = findUser.isPartialMatch(); HashMap<String, String> fields = new HashMap<String, String>(); fields.put("username", makeSqlMatchString(findUser.getUsername(), partialMatch)); fields.put("firstName", makeSqlMatchString(findUser.getFirstName(), partialMatch)); fields.put("lastName", makeSqlMatchString(findUser.getLastName(), partialMatch)); fields.put("email", makeSqlMatchString(findUser.getEmail(), partialMatch)); fields.put("last4", makeSqlMatchString(findUser.getLast4(), partialMatch)); fields.put("address", makeSqlMatchString(findUser.getAddress(), partialMatch)); fields.put("phone", makeSqlMatchString(findUser.getPhone(), partialMatch)); fields.put( "billingName", makeBillingNameString(findUser.getFirstName(), findUser.getLastName())); // check to make sure at least one of the fields is in use // more appropriate for validator? int fieldsInUse = 0; for (String s : fields.keySet()) { if (fields.get(s).length() > 0) { fieldsInUse++; } } if (fieldsInUse == 0) { // reject username rather than whole form since errors:* is not on view errors.rejectValue("username", "one-field-required", "At least one field is required."); return new ModelAndView("admin/FindUser", "findUser", findUser); } List<FindUserResult> resultTempList = userManager.findUsers(fields, findUser.isMatchAllFields()); List<FindUserResult> resultList = new ArrayList<FindUserResult>(); for (FindUserResult f : resultTempList) { User fuser = userManager.getUserByUsername(f.getUsername(), false); f.setFlatrate(subscriptionDao.isActiveFRUser(fuser.getUserId())); resultList.add(f); } ModelAndView mav = new ModelAndView("admin/FindUser"); mav.addObject("findUser", findUser); mav.addObject("resultList", resultList); mav.addObject("count", resultList.size()); return mav; }