Reputation: 261
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
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