jeudi 7 mai 2020

BindingResult is displaying error and how to display errors in JSP pages

My Question is I'm getting BindingResult Error though i have use correct format of data and satisfied all the requirements, And also how to display those server side error messages in my JSP pages. This would be too much helpful.

I have the User Model class as:

package com.nischal.bookshelf.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;

import org.hibernate.validator.constraints.Length;

@Entity
@Table(name = "user")
public class User {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Email(message = "Sorry the Email Id is not Valid") //I want to display this message to my JSP page if user provide me with wrong email id
@NotEmpty(message = "Sorry! you have not entered your Email Id yet.")
private String email;

@NotEmpty(message = "Sorry! you have not entered your password yet")
@Length(min = 6, message = "Sorry your Password is too short")
private String password;

@NotEmpty(message = "Sorry! you have not entered your phone number yet")
@Pattern(regexp="(^|[0-9] {10})",message = "Sorry mobile number must be of ten digits")
private String phone;

I have JSP page i.e registration.jsp as

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action = "registerUser" method = "post">
<pre>
    Email: <input type = "email" name = "email"/>
    Password: <input type = "password" name = "password"/>
    Phone: <input type = "text" name = "phone">
    <input type = "submit" value = "Register"/>     
</pre>
</form>
${msg}    **I want to display Server Side Error Message Here**
</body>
</html>

I have UserController Class as

package com.nischal.bookshelf.controller;

import javax.validation.Valid;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.nischal.bookshelf.entity.User;
import com.nischal.bookshelf.repos.UserRepository;

@Controller
public class UserController {

private static final Logger LOGGER = LoggerFactory.getLogger(UserController.class);

@Autowired
private UserRepository userRepository;

@RequestMapping("/showRegistration")
public String showRegistration() {
    LOGGER.info("We are inside of the /login/registration i.e showRegistration(). ");
    return "/login/registration";
}

@RequestMapping(value = "/registerUser", method = RequestMethod.POST)
public String registerUser(@Valid @ModelAttribute("user") User user, BindingResult bindingResult, ModelMap modelMap) {
    if(bindingResult.hasErrors()) {
        modelMap.addAttribute("msg", "Please Correct the error in the above forms");
        LOGGER.info("We are having the errors.");
        return "/login/registration";
    }
    else {
        userRepository.save(user);
    }
    return "/login/login";
}

}

The Following type of error is displayed though every property satisfies requirement enter image description here

It have to be transfer to the Login page but it doesn't and shows same error page as: enter image description here




Aucun commentaire:

Enregistrer un commentaire