package com.joedayz.corespringtest.web;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.joedayz.corespringtest.domain.Comentario;
import com.joedayz.corespringtest.domain.Post;
import com.joedayz.corespringtest.service.ComentarioService;
import com.joedayz.corespringtest.service.PostService;
@Controller
public class ComentarioController {
private static final String POST = "post";
private static final String COMENTARIOS = "comentarios";
private static final String COMENTARIO = "comentario";
@Autowired
private PostService postService;
@Autowired
private ComentarioService comentarioService;
@InitBinder
public void init(WebDataBinder dataBinder){
dataBinder.setRequiredFields("nombre", "correoElectronico", "comentario");
}
@RequestMapping(value = "/comentarios.htm", method = RequestMethod.GET)
public @ModelAttribute(COMENTARIO) Comentario
verPost(@RequestParam(value = "idPost", required = false) Long id,
Model model){
Comentario comentario = new Comentario();
if(id != null){
List<Comentario> comentarios = comentarioService.listarTodosLosComentariosPorPost(id);
Post post = postService.obtenerPost(id);
comentario.setIdPost(post.getId());
model.addAttribute(COMENTARIOS, comentarios);
model.addAttribute(POST, post);
}
return comentario;
}
@RequestMapping(value = "/comentarios.htm", method = RequestMethod.POST)
public String guardarComentario(@ModelAttribute("comentario") Comentario comentario,
BindingResult result, Model model){
if(result.hasErrors()){
List<Comentario> comentarios = comentarioService.listarTodosLosComentariosPorPost(comentario.getIdPost());
Post post = postService.obtenerPost(comentario.getIdPost());
model.addAttribute(COMENTARIOS, comentarios);
model.addAttribute(POST, post);
return "comentarios";
}
comentarioService.guardarComentario(comentario);
return "redirect:comentarios.htm?idPost="+comentario.getIdPost();
}
}