private void populateError (String field, Model model, BindingResult bindingResult) {
	if (bindingResult.hasFieldErrors(field)) {
		model.addAttribute(field + "Error", bindingResult.getFieldError(field)
				.getDefaultMessage());
	}
}

        

@RequestMapping("adicionaTarefa")
public String adiciona(@Valid Tarefa tarefa, BindingResult result) {

	if(result.hasFieldErrors("descricao")) {
		return "tarefa/formulario";
	}

	JdbcTarefaDao dao = new JdbcTarefaDao();
	dao.adiciona(tarefa);
	return "tarefa/adicionada";
}


        

if (bindingResult.hasErrors()) {
     // ignore field password
     if (!bindingResult.hasFieldErrors("password")) {
          // do something
     }
}

        

@RequestMapping(value = "/confirmarCadastro", method = RequestMethod.POST)
public String confirmarCadastro(@Valid Contato contato, BindingResult bindingResult, 
		RedirectAttributes redirectAttributes) {        

	if (bindingResult.hasFieldErrors()) {
		return "contatos/cadastro";
	}

	contatoService.save(contato);
	redirectAttributes.addFlashAttribute("mensagem", "Contato cadastrado com sucesso.");
	return "redirect:/contatos";
}

        

public void validate(Object target, Errors errors) { 
	ValidationUtils.rejectIfEmpty(errors, "username", "required", new Object[] { "Username" }); 
	ValidationUtils.rejectIfEmpty(errors, "password", "required", new Object[] { "Password" }); 
	ValidationUtils.rejectIfEmpty(errors, "emailAddress", "required", new Object[] { "Email address" }); 
	ValidationUtils.rejectIfEmpty(errors, "address.street", "required", new Object[] { "Street" }); 
	ValidationUtils.rejectIfEmpty(errors, "address.city", "required", new Object[] { "City" }); 
	ValidationUtils.rejectIfEmpty(errors, "address.country", "required", new Object[] { "Country" }); 

	if (!errors.hasFieldErrors("emailAddress")) { 
		Account account = (Account) target; 
		String email = account.getEmailAddress(); 
		if (!email.matches(EMAIL_PATTERN)) { 
			errors.rejectValue("emailAddress", "invalid"); 
		} 
	} 
}

        

@RequestMapping(value = "/produto/salvarProduto", method = RequestMethod.POST)
public String salvarProduto(@Valid Produto produto, BindingResult result, ModelMap model) {
    String mensagem = null;
    if (result.hasFieldErrors("nome") || result.hasFieldErrors("descricao") || result.hasFieldErrors("preco")) {
        mensagem = mensagensPadronizadas.erroAoCadastrarProduto;
        model.addAttribute("mensagemTitulo", mensagem);
        return "forward:/produto";
    } else {
        try {
            produtoService.salvarProduto(produto);
            mensagem = mensagensPadronizadas.produtoAdicionadoComSucesso;
        } catch (ValidationException e) {
            mensagem = e.getMessage();
        }
        model.addAttribute("mensagemTitulo", mensagem);
        return "forward:/produto";
    }
}

        

private ModelAndView processBindingResult(Exception exception, BindingResult bindingResult, HttpServletRequest request, HttpServletResponse response) throws IOException {
    if (request.getHeaders("X-Requested-With").hasMoreElements() && bindingResult.hasFieldErrors()) {
        //AJAX request;
        Map<String, List<String>> errorMap = validationManager.getErrorsAsMap(bindingResult);
        String content = validationManager.getMessageJSON(errorMap).toString();
        response.setStatus(HttpServletResponse.SC_NOT_ACCEPTABLE);
        response.setContentLength(content.getBytes(Charset.forName(response.getCharacterEncoding())).length);
        response.getWriter().print(content);
        response.flushBuffer();
        return null;
    } else {
        //Non-AJAX request
        return MvcExceptionHandler.handle(exception, request, response);
    }
}

        

@Transactional
@RequestMapping("/save/{action}")
public ModelAndView save(@PathVariable String action, @Valid Curso curso, BindingResult bind) {
    Message msg = null;
    if (bind.hasFieldErrors()) {
        msg = new Message(MessageType.ERROR, "Curso informado é inválido para esta operação!");
    } else if ("add".equals(action)) {
        cursoJpaDAO.create(curso);
        msg = new Message(MessageType.INFO, "Curso incluido com sucesso!");
    } else if ("edit".equals(action)) {
        cursoJpaDAO.update(curso);
        msg = new Message(MessageType.INFO, "Curso alterado com sucesso!");
    } else if ("delete".equals(action)) {
        cursoJpaDAO.delete(curso);
        msg = new Message(MessageType.INFO, "Curso excluido com sucesso!");
    } else {
        msg = new Message(MessageType.ERROR, "Operação Inválida!");
    }
    ModelAndView mv = new ModelAndView("common/message");
    mv.addObject("msg", msg);
    mv.addObject("back", "/cursos/list");
    return mv;
}

        

public ResultMatcher attributeHasFieldErrorCode(final String name, final String fieldName, final String error) {
    return new ResultMatcher() {

        public void match(MvcResult mvcResult) throws Exception {
            ModelAndView mav = getModelAndView(mvcResult);
            BindingResult result = getBindingResult(mav, name);
            assertTrue("No errors for attribute: [" + name + "]", result.hasErrors());
            boolean hasFieldErrors = result.hasFieldErrors(fieldName);
            assertTrue("No errors for field: [" + fieldName + "] of attribute [" + name + "]", hasFieldErrors);
            String code = result.getFieldError(fieldName).getCode();
            assertTrue("Expected error code '" + error + "' but got '" + code + "'", code.equals(error));
        }
    };
}

        

@RequestMapping(value = "/add/link", method = POST)
public String createLinkPost(@Valid PostDTO postDTO, BindingResult result,
                             CurrentUser currentUser, RedirectAttributes attributes, Model model,
                             HttpServletRequest request) throws DuplicatePostNameException {
    PagePreviewDTO pagePreview =
            (PagePreviewDTO) WebUtils.getSessionAttribute(request, "pagePreview");

    model.addAttribute("postheader", webUI.getMessage(ADD_LINK_HEADER));
    model.addAttribute("postFormType", "link");

    if (!isDuplicatePost(postDTO, null)) {
        if (result.hasErrors()) {
            model.addAttribute("hasLink", true);
            model.addAttribute("hasCarousel", true);
            model.addAttribute("pagePreview", pagePreview);
            if (result.hasFieldErrors("postTitle")) {
                postDTO.setPostTitle(pagePreview.getTitle());
            }
            model.addAttribute("postDTO", postDTO);
            return ADMIN_LINK_ADD_VIEW;
        } else {

            if (postDTO.getHasImages()) {
                if (postDTO.getDisplayType() != PostDisplayType.LINK) {
                    postDTO.setPostImage(
                            pagePreview.getImages().get(postDTO.getImageIndex()).src);
                } else
                    postDTO.setPostImage(null);
            }

            postDTO.setPostSource(PostUtils.createPostSource(postDTO.getPostLink()));
            postDTO.setPostName(PostUtils.createSlug(postDTO.getPostTitle()));
            postDTO.setUserId(currentUser.getId());
            postDTO.setPostContent(cleanContentTailHtml(postDTO.getPostContent()));

            request.setAttribute("postTitle", postDTO.getPostTitle());
            Post post = postService.add(postDTO);

            postDTO.setPostId(post.getPostId());
            post.setPostMeta(jsoupService.createPostMeta(postDTO));

            // All links are saved as PUBLISHED so no _isPublished_ status check on new Links
            if (applicationSettings.getSolrEnabled())
                postDocService.addToIndex(post);

            // Links are included in Posts A-to-Z Listing
            fmService.createPostAtoZs();

            webUI.addFeedbackMessage(attributes, FEEDBACK_POST_LINK_ADDED);
            return "redirect:/admin/posts";
        }
    } else {
        result.reject("global.error.post.name.exists", new Object[]{postDTO.getPostTitle()}, "post name exists");
        model.addAttribute("hasLink", true);
        model.addAttribute("hasCarousel", true);
        model.addAttribute("pagePreview", pagePreview);
        return ADMIN_LINK_ADD_VIEW;
    }
}        
main