Spring MVC, Hibernate, Jsp e agregação

3 respostas
J

Olá pessoal, eu to com um problema no meu sistema, eis o drama.
Eu já fiz a injeção de dependência do sessionFactory
mapeei as classes
mas qnd chega no jsp eu não consigo passar o objeto e uma lista de objetos via jsp

public class Usuario{

      private String nome;
      //outros atributos
      private Perfil perfil;

}
public class Perfil{

      private String nome;
      //outros atributos
      private List<Funcao> funcao;

}
public class Funcao{

      private String nome;
      //outros atributos

}

alguém sabe como passar pelo jsp o objeto Perfil para o Usuario e a lista de Função para o Perfil ??

3 Respostas

Hebert_Coelho

Como assim não consegue?

Você tem alguma mensagem de erro ou coisa parecida?

J

vou colocar os códigos aki…

@Controller
public class UsuarioController {

	/**
	 * @return
	 */
	@Autowired
	private UsuarioService service;
	@Autowired
	private PerfilService pService;
	
	
	@RequestMapping("/Usuario/cadastro")
	public String cadastro(Model model){
		List<Perfil> lista = pService.listar();
		model.addAttribute("lista", lista);
		return "usuario/cadastro";
	}
	
	@RequestMapping("/Usuario/cadastrar")
	public String cadastro(Usuario usuario){
		service.adiciona(usuario);
		return "usuario/cadastrou";
	}
	
	@RequestMapping("/Usuario/listar")
	public String listar(Model model){
		model.addAttribute("lista", service.lista());
		return "usuario/lista";
	}
}
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<form action="cadastrar.do">
		Nome: <input type="text" name="nome" /><br/>
		Sobrenome: <input type="text" name="sobrenome" /><br/>
		Login: <input type="text" name="login" /><br/>
		Senha: <input type="password" name="senha"/><br/>
		<!-- Data de Nascimento: <input type="text" name="dataNascimento" /><br/> -->
		[b]Perfil: <select name="perfil">
			<c:forEach items="${lista}" var = "perfil">
				<option value="${perfil.id}">${perfil.nome}</option>			
			</c:forEach>
		</select><br />[/b]
		
		
		<input type="submit" value="gravar">
	</form>

</body>
</html>

fazendo isso e cadastrando dá esse erro

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'usuario' on field 'perfil': rejected value [1]; codes [methodInvocation.usuario.perfil,methodInvocation.perfil,methodInvocation.java.lang.Long,methodInvocation]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [usuario.perfil,perfil]; arguments []; default message [perfil]]; default message [Property 'perfil' threw exception; nested exception is java.lang.Error: Unresolved compilation problem: 
	Type mismatch: cannot convert from Long to Perfil
]
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause

org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'usuario' on field 'perfil': rejected value [1]; codes [methodInvocation.usuario.perfil,methodInvocation.perfil,methodInvocation.java.lang.Long,methodInvocation]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [usuario.perfil,perfil]; arguments []; default message [perfil]]; default message [Property 'perfil' threw exception; nested exception is java.lang.Error: Unresolved compilation problem: 
	Type mismatch: cannot convert from Long to Perfil
]
	org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:810)
	org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:359)
	org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
	org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
	org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

eu to fazendo do jeito errado ??
Desde já agradeço

jaboot

Tenta utilizando o ModelMap. Ficaria mais ou menos assim:

@RequestMapping("/Usuario/cadastro") public String cadastro(ModelMap map, Model model){ List<Perfil> lista = pService.listar(); map.addAttribute("lista", lista); return "usuario/cadastro"; }
PS: tá usando tiles?

Criado 11 de maio de 2012
Ultima resposta 11 de mai. de 2012
Respostas 3
Participantes 3