2015-10-09 4 views
0

Я новичок в Spring MVCSpring MVC 4 - <форма: ошибки /> Не работает

Я использую в моем приложении & он не отображается сообщение об ошибке вместе с полем.

Пожалуйста, смотрите в следующий код

Employee.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> 
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>  

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Zaptech</title> 
</head> 
<body> 
<form action="save"> 
    <table> 
     <tr> 
      <td>Name</td> 
      <td><input type="text" name="name" id="name"></td> 
      <td><form:errors path="name"></form:errors></td>    
     </tr> 

     <tr> 
      <td>Blood Group</td> 
      <td><input type="text" name="bloodGroup" id="bloodGroup"></td> 
      <td><form:errors path="bloodGroup"></form:errors></td> 
     </tr> 

     <tr> 
      <td><input type="submit" value="Save"></td> 
     </tr> 
    </table> 
</form> 
</body> 
</html> 

EmployeeController.java

import java.io.IOException; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.validation.BindingResult; 
import org.springframework.validation.annotation.Validated; 
import org.springframework.web.bind.annotation.ModelAttribute; 
import org.springframework.web.bind.annotation.RequestMapping; 

import com.jagir.hrm.Validator.EmployeeValidator; 
import com.jagir.hrm.model.Employee; 
import com.jagir.hrm.service.EmployeeService; 

@Controller 
public class EmployeeController 
{ 
    @Autowired 
    EmployeeService empService; 

    @Autowired 
    EmployeeValidator empValidator; 

    @RequestMapping(value="/") 
    public String homePage() 
    { 
     System.out.println("Inside intel"); 
     return "employee"; 
    } 

    @RequestMapping(value="employee") 
    public String showEmployee() 
    { 
     return "employee"; 
    } 

    @RequestMapping(value="save") 
    public String saveEmployee(@ModelAttribute("command") @Validated Employee e , BindingResult result) throws IOException 
    { 
     System.out.println("Inside employee :: " + e.getName()); 
     //throw new IOException("Excption"); 
     System.out.println(result); 
     empValidator.validate(e, result); 
     System.out.println(result); 
     System.out.println(result.hasErrors()); 
     if(result.hasErrors()) 
     { 
      System.out.println("Error has occured");  

     } 
     else 
     { 
      System.out.println("No Errors continue to save records"); 
      empService.saveEmployee(e); 
     } 

     return "employee"; 
    } 
} 

EmployeeValidator.java

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Component; 
import org.springframework.validation.Errors; 
import org.springframework.validation.ValidationUtils; 
import org.springframework.validation.Validator; 

import com.jagir.hrm.model.Employee; 
import com.jagir.hrm.service.EmployeeService; 

@Component 
public class EmployeeValidator implements Validator 
{ 
    @Autowired 
    EmployeeService employeeService; 

    public boolean supports(Class<?> clazz) 
    { 
     return Employee.class.equals(clazz); 
    } 

    public void validate(Object target, Errors errors) 
    { 
     System.out.println("validation of objects"); 
     Employee employee = (Employee) target; 
     ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "employee.name.notempty"); 
     ValidationUtils.rejectIfEmptyOrWhitespace(errors, "bloodGroup", "employee.bloodGroup.size"); 
     if(employee.getBloodGroup().length()>=2) 
     { 
      System.out.println("Inside blood groups"); 
      errors.rejectValue("bloodGroup", "employee.bloodGroup.size"); 
     } 
    } 
} 

, если я входные собственные значения, то она работает должным образом и идет в базу данных, но Когда я ввода 5 символов в группе крови он выдает ошибку, которую я могу увидеть в консоли, но в моей веб-странице я не могу видеть ошибка вместе с полем группы крови.

ответ

0

Employee.jsp использует простой HTML form элемент + весна form:errors тег.

form:errors бирка предполагается использовать внутри form:form бирка (или spring:bind бирка, если быть точным).

Попробуйте использовать тег form:form и посмотрите, как это работает. Я также предлагаю использовать form:input вместо простого HTML input.

<form:form modelAttribute="command" action="save" 
    ... 
    <form:input path="name"/> 
    <form:errors path="name"/> 
    ... 
</form> 
+0

Вы пробовали подсказку? Помогло ли это? –

Смежные вопросы