Bom dia!
Após a conclusão do curso de Spring (I e II) pus em prática as lições e comecei a desenvolver uma aplicação simples baseada no treinamento mas me deparei com um erro e não consigo enxergar o porquê do mesmo, a mensagem de erro está dizendo que o Objeto da classe não está disponível como atributo da requisição, o famoso "Neither Binding nor plain target object for Bean name... available as request attribute", o estranho é que já coloquei o objeto na assinatura do método e corrigi as chamadas do form, mas mesmo assim o erro persiste... Se alguém puder me mostrar aonde está o erro, serei muito grato!
Ah, no caso, meu objeto é o OS (em vez de Produto, no curso)
Obrigado!
@Controller @RequestMapping("/oss") public class OsController {
@Autowired
private OsDao dao;
@RequestMapping("/form")
public ModelAndView form(OS os) {
ModelAndView modelAndView=new ModelAndView("/oss/form");
return modelAndView;
}
@RequestMapping(method = RequestMethod.POST)
public ModelAndView gravar(@Valid OS os, BindingResult result, RedirectAttributes redirectAttributes) {
if(result.hasErrors()) {
System.out.println("Form vazio!, retornando ao form");
System.out.println("OC - grava - os :"+os.toString());
return form(os);
}
if(os.getDataAbertura()==null) {
os.setDataAbertura(LocalDate.now());
}
dao.gravar(os);
redirectAttributes.addFlashAttribute("resultado", "Ordem de serviço aberta com sucesso!");
return new ModelAndView("redirect:oss"); //para evitar ressubmissão //osAbertas();
}
meu form.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Formulário de abertura de ordens de serviço</title>
</head>
<body>
<form:form action="${s:mvcUrl('OC#gravar').build() }" method="post" commandName="os">
<div>
<label>Categoria</label>
<form:select path="categoria">
<form:option value="MANUTENÇÂO">MANUTENÇÂO</form:option>
<form:option value="SUPRIMENTO">SUPRIMENTO</form:option>
<form:option value="SERVIÇOS">SERVIÇOS</form:option>
</form:select>
</div>
<div>
<label>Solicitação</label>
<form:textarea path="solicitacao" rows="10" cols="50"/>
<form:errors path="solicitacao"/>
</div>
<div>
<button type="submit">Gerar</button>
</div>
</form:form>
</body>
</html>