Ezhil
Ezhil

Reputation: 261

trying to delete a user from database in spring mvc

I am trying to delete a user from database but in vain...I am able to save the user to the database.

My spring controller class is as follows

CController.java

import project4.UserDAO1;
import project4.User1;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.ModelMap;
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.multiaction.MultiActionController;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.validation.BindingResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;


@Controller




public class CController{

    private UserDAO1 userDAO;
    @Autowired
    @Qualifier("myUserDAO")
    private UserDAOImpl1 myUserDAO;

    public void setUserDAO(UserDAO1 userDAO) {
        this.userDAO = userDAO;
    }

    @RequestMapping(value = "/frm4/add", method = RequestMethod.POST)
   public ModelAndView add( @ModelAttribute("add") User1 user,HttpServletRequest 
       request,HttpServletResponse response) throws Exception {
         System.out.println("hai");

        userDAO.saveUser(user);
        System.out.println("hai");
        return new ModelAndView("redirect:/list.htm");
    }

    @RequestMapping(params = "/deleteuser/delete", method = RequestMethod.POST)
    @Transactional
    public ModelAndView delete(@ModelAttribute("delete") User1 user,HttpServletRequest 
          request,HttpServletResponse response) throws Exception {
          userDAO.deleteUser(user);
          return new ModelAndView("redirect:list.htm");
    }


    @RequestMapping(params = "find", method = RequestMethod.POST)
    @Transactional
    public ModelAndView find(@ModelAttribute("find") User1 user,HttpServletRequest 
        request,HttpServletResponse response) throws Exception {  
                     userDAO.findUser(user);
                      return new ModelAndView("redirect:list.htm");
    }


    @RequestMapping(params = "update", method = RequestMethod.POST)
    @Transactional
    public ModelAndView update(@ModelAttribute("update") User1 user,HttpServletRequest
          request,HttpServletResponse response) throws Exception {  
                     userDAO.updateUser(user);
                      return new ModelAndView("redirect:list.htm");
    }


    @RequestMapping(value = "list", method = RequestMethod.GET)
    public ModelAndView list(HttpServletRequest request,
            HttpServletResponse response) throws Exception {


        ModelMap modelMap = new ModelMap();
        modelMap.addAttribute("userList", userDAO.listUser());
        modelMap.addAttribute("user", new User1());
        return new ModelAndView("list", modelMap);
    }
  }

my hibeernate template class is as follows

import project4.User1;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

public class UserDAOImpl1 implements UserDAO1 {

    private HibernateTemplate hibernateTemplate;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.hibernateTemplate = new HibernateTemplate(sessionFactory);
    }

    @Override
    @Transactional(propagation=Propagation.REQUIRED, readOnly=false)
    public void saveUser(User1 user) {
    try {
     System.out.println (user.getId ());
    hibernateTemplate.save(user);
    }catch (RuntimeException re){
        throw re;
    }
  }

  @Override
  @SuppressWarnings("unchecked")
  public List<User1> listUser() {
    List<User1> result = hibernateTemplate.find("from User1");
    System.out.println("hai");
    System.out.println(result);
    return result;
  }

    @Override
   public void deleteUser(User1 user) {
       hibernateTemplate.delete("from User1 where USER_ID=:" +user.getId());
   }

    @Override
    public List<User1> findUser(User1 user) {
        List<User1> result =hibernateTemplate.find("from User1 where USER_ID=:" 
                          +user.getId());
        return result;

    }

    @Override
    public void updateUser(User1 user) {
        hibernateTemplate.update(user);

    }

 }

my front end jsp is as follows

frm4.jsp

<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>Insert title here</title>
 </head>
 <body>
   <form method="POST" action="<%=request.getContextPath()%>/frm4/add">
    <table>
     <tr>
      <td><label for="oid">Id:</label></td>
      <td>
          <input  name="oid" value="${user.id}" />
      </td>
     </tr>
     <tr>
     <td>
        <label for="name">Name:</label></td>
     <td>
        <input name="name" value="${user.name}" />
     </td>
    </tr>
    <tr>
     <td>
        <label for="password">Password:</label></td>
     <td>
         <input name="password" value="${user.password}" />
     </td>
    </tr>

    <tr>
      <td>
          <label for="gender">Gender:</label></td>
      <td>
          <input name="gender" value="${user.gender}" />
      </td>
     </tr>
     <tr>
       <td>
           <label for="lastName">Country:</label></td>
       <td>
            <input name="country" value="${user.country}" />
       </td>
      </tr>

    </table> 
      <input type="submit" value="Submit"/> 
   </form>
  </body>
 </html>

and jsp for implementing delete function is as follows

deleteuser.jsp

<%@ page import="java.util.Date" %>
<%@ page isELIgnored="false" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     <title>Insert title here</title>
 </head>
 <body>
     <form method="POST" action="<%=request.getContextPath()%>/deleteuser/delete"> 

      <P>Are you sure you want to delete this user??</P>
       <input type="submit" value="Yes" />

   </form>
     <p> <a href="frm4.jsp">No</a></p>
   </body>
  </html>

I am getting "neither binding result nor plain target object" error if i use so i am just using the jsp form tag.I am using the same implementation method for both the jsp files but the deleteuser.jsp is not mapping to the spring controller class i.e CController.java

I am getting the url when i click the delete button as

http://localhost:8080/Spring/deleteuser/delete

It is just searching for the file delete instead of mapping to the controller.Any help plzzz

Upvotes: 0

Views: 1352

Answers (1)

gerrytan
gerrytan

Reputation: 41113

You didn't have a model attribute "delete" of type User1 when you submit through deleteuser.jsp. You only have a form with one submit button.

If you're implementing a confirmation page, try persist the User1 object on session or other mechanism.

Typically you don't need to bind the whole object just to delete an entry, you can just pass the user id and look it up via hibernate on your controller

Upvotes: 1

Related Questions