Skip to content

Commit

Permalink
Form básico de cadastro.
Browse files Browse the repository at this point in the history
  • Loading branch information
alvadorn committed Aug 10, 2015
1 parent 0b2bbfd commit 8157e13
Show file tree
Hide file tree
Showing 5 changed files with 181 additions and 0 deletions.
59 changes: 59 additions & 0 deletions src/main/java/br/ufes/cdsceunes/controller/TeacherController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package br.ufes.cdsceunes.controller;

import javax.transaction.Transactional;
import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
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.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import br.ufes.cdsceunes.dao.TeacherDAO;
import br.ufes.cdsceunes.model.Teacher;
import br.ufes.cdsceunes.validators.TeacherValidator;

@Controller
@Transactional
@RequestMapping("/teachers")
public class TeacherController extends AbstractController {

@Autowired
private TeacherDAO teachers;

@InitBinder
protected void initBinder(WebDataBinder dataBinder) {
//dataBinder.setValidator(new TeacherValidator());
}

@RequestMapping("/")
public ModelAndView list() {
ModelAndView mad = new ModelAndView("teacher/list");
mad.addObject("teachers", teachers.list());
return mad;
}

@RequestMapping(value = "/form", name = "add")
public ModelAndView form(@ModelAttribute Teacher teacher) {
ModelAndView mad = new ModelAndView("teacher/form");
return mad;
}

@RequestMapping(method = RequestMethod.POST, name="create", value="save")
public ModelAndView save(@ModelAttribute("teacher") @Valid Teacher teacher, BindingResult binding,
RedirectAttributes redirectAttributes) {
if (binding.hasErrors()) {
return form(teacher);
}

teachers.save(teacher);

redirectAttributes.addFlashAttribute("sucess", "Professor cadastrado com sucesso");
return new ModelAndView("redirect:");
}
}
39 changes: 39 additions & 0 deletions src/main/java/br/ufes/cdsceunes/model/Teacher.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,44 @@
package br.ufes.cdsceunes.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Min;

import org.hibernate.validator.constraints.NotBlank;

@Entity
public class Teacher extends AbstractModel {

@Id
@GeneratedValue
private Long id;

@NotBlank
private String name;

@NotBlank
private Integer age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}





}
25 changes: 25 additions & 0 deletions src/main/java/br/ufes/cdsceunes/validators/TeacherValidator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package br.ufes.cdsceunes.validators;

import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

import br.ufes.cdsceunes.model.Teacher;

public class TeacherValidator implements Validator {

@Override
public boolean supports(Class<?> clazz) {
return Teacher.class.isAssignableFrom(clazz);
}

@Override
public void validate(Object object, Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "field.required");
Teacher teacher = (Teacher) object;
if (teacher.getAge() == 0) {
errors.rejectValue("age", "field.required");
}
}

}
25 changes: 25 additions & 0 deletions src/main/webapp/WEB-INF/views/teacher/form.jsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
<title>Adicionando novo professor</title>
</head>
<body>
<form:form action="${spring:mvcUrl('create').build()}" method="post"
commandName="teacher">
<div>
<label for="name">Nome:</label>
<form:input path="name" />
<form:errors path="name" />
</div>
<div>
<label for="age">Idade:</label>
<form:input path="age" />
<form:errors path="age" />
</div>
<div>
<input type="submit" value="Enviar" />
</div>
</form:form>
</body>
</html>
33 changes: 33 additions & 0 deletions src/main/webapp/WEB-INF/views/teacher/list.jsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<html>
<head>
<title>Lista de professores</title>
</head>
<body>
${sucess}
<spring:hasBindErrors name="teacher">
<ul>
<c:forEach var="error" items="${errors.allErrors }">
<li>${error.code }-${error.field}</li>
</c:forEach>
</ul>
</spring:hasBindErrors>
<table>
<tr>
<td>Nome</td>
<td>Idade</td>
</tr>
<c:forEach items="${teachers}" var="teacher">
<tr>
<td>${teacher.name}</td>
<td>${teacher.age }</td>
</tr>
</c:forEach>
</table>
<footer>
<a href="${spring:mvcUrl("add").build()}">Adicionar novo professor</a>
</footer>
</body>
</html>

0 comments on commit 8157e13

Please sign in to comment.