Я хочу, чтобы упростить проверку с помощью Spring MVC.Проверка Spring MVC не работает
Я добавил к pom.xml
:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
Вот мой POJO:
import org.hibernate.validator.constraints.Range;
public class Goal {
@Range(min = 1, max = 120)
private int minutes;
// getters + setters
и контроллер реализация:
import javax.validation.Valid;
@Controller
@SessionAttributes("goal")
public class GoalController {
@RequestMapping(value = "addGoal", method = RequestMethod.GET)
public String addGoal(Model model) {
Goal goal = new Goal();
goal.setMinutes(10);
model.addAttribute("goal", goal);
return "addGoal";
}
@RequestMapping(value = "addGoal", method = RequestMethod.POST)
public String updateGoal(@Valid @ModelAttribute(value = "goal") Goal goal, BindingResult result) {
System.out.printf("Result has errors: %s%n", result.hasErrors());
System.out.printf("Minutes updated: %d%n", goal.getMinutes());
if (result.hasErrors()) {
return "addGoal";
}
return "redirect:/addMinutes.html";
}
}
addGoal.jsp
страница:
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<html>
<head>
<title>Add Goal Here</title>
<style>
.error {
color: #ff0000;
}
.errorblock {
color: #000;
background-color: #ffeeee;
border: 3px solid #ff0000;
padding: 8px;
margin: 16px;
}
</style>
</head>
<body>
Language: <a href="?language=en">English</a> | <a href="?language=uk">Ukrainian</a>
<form:form commandName="goal">
<form:errors path="*" cssClass="errorblock" element="div" />
<table>
<tr>
<td><spring:message code="goal.minutes"/></td>
<td><form:input path="minutes"/></td>
<td><form:errors path="minutes" cssClass="error"/></td>
</tr>
<tr>
<td colspan="3">
<input type="submit" value="Enter Goal Minutes"/>
</td>
</tr>
</table>
</form:form>
</body>
</html>
А вот вид страницы:
и соответствующий результат:
фрагмент из консоль:
Result has errors: false
Minutes updated: -5
Он должен отображать сообщение об ошибке для отрицательного входа и остаться на той же странице, а не второй экран выстрел.
Я не мог понять причину этой проблемы.
Любое предложение?
Где объявления для тегов 'form' в вашем файле jsp? – mic4ael
@ mic4ael Я пропустил его для сокращения фрагментов кода. Я редактировал вопрос. –
Хорошо, я думал, что это могла быть проблема. – mic4ael