2016-08-10 4 views
0

Ich arbeite an einer CRV-Anwendung Spring mvc + hibernate.Formular wird zur Bearbeitung in Hibernate + Spring nicht ausgefüllt MVC

Mein erstellen und hinzufügen Funktionalitäten richtig funktionieren, aber wenn ich die Verwendung

bearbeiten Funktionalität von der Homepage, wird das Formular nicht für die Bearbeitung bevölkert zu werden.

Die ID wird automatisch generiert.

Mein Code:

////////////////////////////////-Controller ////// ////////////////////////

@Controller 
public class MainController { 

    @Autowired 
    private PersonService ps; 



    @RequestMapping("/") 
      public ModelAndView listPersons(ModelAndView model) throws IOException { 
      List<Person> listper = ps.list(); 
      model.addObject("personsList", listper); 
      model.setViewName("index"); 
      return model; 

    } 
    @RequestMapping(value = "/newPerson", method = RequestMethod.GET) 
    public ModelAndView newPerson(ModelAndView model) throws IOException { 
     @SuppressWarnings("unused") 
     Person p = new Person(); 
     model.addObject("person", new Person()); 
     model.setViewName("AddPerson"); 

     return new ModelAndView("AddPerson", "person", new Person()); 



    } 

    @RequestMapping("/save") 
    public String save(@ModelAttribute Person p) { 
     Person person=ps.getPersonById(p.getId()); 
     person=p; 
     //ps.getPersonById(p.getId()); 
     ps.save(person); 

     return "index"; 

    } 
/* @RequestMapping(value = "/savePerson") 
    public ModelAndView savePerson(ModelAndView model,@ModelAttribute Person p) { 

     Person p1 = new Person(); 
     ps.updatePerson(p1); 
     //List<Person> listp = ps.list(); 
     //model.addObject("personslist",listp); 
     model.setViewName("AddPerson"); 
     return new ModelAndView("AddPerson", "person", new Person()); 



    } */ 

    @RequestMapping("/editPerson/{id}") 
     public ModelAndView editPerson(@RequestParam Integer id){ 
     Person person=ps.getPersonById(id); 
     ModelAndView mv=new ModelAndView(); 
     mv.addObject("p", person); 
     mv.setViewName("AddPerson"); 
      return mv; 
     } 

    @RequestMapping("/remove/{id}") 
     public String removePerson(@PathVariable("id") int id){ 

      this.ps.removePerson(id); 
      return "redirect:/persons"; 
     } 



} 

/////////////////// ///////// DAOImpl ///////////////////////

@Transactional 
@Repository 
public class PersonDAOImpl implements PersonDAO,java.io.Serializable{ 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    private static final Logger logger = (Logger) LoggerFactory.getLogger(PersonDAOImpl.class); 

    @Autowired 
    private SessionFactory sessionFactory; 
    public void setSessionFactory(SessionFactory sf){ 
     this.sessionFactory = sf; 
    } 



    public void save(Person p) { 
     // TODO Auto-generated method stub 
     Session s = sessionFactory.openSession(); 
     Transaction tx = s.beginTransaction(); 
     s.saveOrUpdate(p); 
     tx.commit(); 
     s.close(); 

     System.out.println("Record successfully inserted"); 

    } 


    @SuppressWarnings("deprecation") 
    public List<Person> list() { 
     // TODO Auto-generated method stub 
     Session session = this.sessionFactory.getCurrentSession(); 
     @SuppressWarnings("unchecked") 
     List<Person> personsList = session.createQuery("from Person").list(); 
     for(Person p : personsList){ 
      logger.info("Person List::"+p); 
     } 
     return personsList; 

    } 






    public void updatePerson(Person p) { 
     // TODO Auto-generated method stub 

     System.out.println("Person id="+p.getId()); 
     // Session session = sessionFactory.getCurrentSession(); 


      /* Person person = session.get(Person.class, p.getId()); 
      person.setName(p.getName()); // modify the loaded object somehow 
      session.update(person);*/ 
     Session session = new Configuration().configure() 
        .buildSessionFactory().openSession(); 

      Transaction t = session.beginTransaction(); 
     p = new Person(); 
     p.setId(p.getId()); 
     p.setName(p.getName()); 
     p.setGender(p.getGender()); 
     p.setAddress(p.getAddress()); 
     p.setSalary(p.getSalary()); 
    session.saveOrUpdate(p); 


    } 



    public Person getPersonById(int id) { 
     // TODO Auto-generated method stub 
     Session session = this.sessionFactory.getCurrentSession();  
     Person p = (Person) session.load(Person.class, new Integer(id)); 
     logger.info("Person loaded successfully, Person details="+p); 
     return p; 
    } 



    public void removePerson(Person p) { 
     /*// TODO Auto-generated method stub 
     Session session = this.sessionFactory.getCurrentSession(); 
     //Person p = (Person) session.load(Person.class, new Integer(p.getId())); 
     Person p1 = getPersonById(p.getId()); 

      session.delete(p.getId()); 

     logger.info("Person deleted successfully, person details=");*/ 
     Session session = new Configuration().configure() 
       .buildSessionFactory().openSession(); 

     Transaction t = session.beginTransaction(); 
     p = new Person(); 
     p=getPersonById(p.getId()); 
     session.delete(p); 

    } 

////////// //////////////////////////////index.jsp///////////////////// //////

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

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


<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>Welcome</title> 
    </head> 
    <body> 
    <h2>Hello World!</h2> 

<h3><a href="/MainAssignment3/newPerson">Add Person</a></h3> 
    <table border="1"> 
<tr> 
    <th>id</th> 
    <th>name</th> 
    <th>address</th> 
    <th>gender</th> 
    <th>salary</th> 

</tr> 
<c:forEach var="person" items='${personsList}' varStatus="status"> 
    <tr> 
     <td>${status.index+1}</td> 
     <td>${person.id}</td> 
     <td>${person.address}</td> 
     <td>${person.gender}</td> 
     <td>${person.salary}</td> 
     <td>${person.name}</td> 
     <td> 
     <a href="/MainAssignment3/editPerson/{id}?id=${person.id}">Edit</a> 
      <a href="/MainAssignment3/remove/{id}?id=${person.id}">Delete</a> 
     </td> 

    </tr> 

</c:forEach> 


</table> 

    </body> 
</html> 
+0

Ich habe auch versucht HQL und Kriterien, aber die wird nur funktionieren, nach meiner Form –

Antwort

0

Bitte aktualisieren Sie Ihre Daoimpl-Methode wie folgt!

public void removePerson(Integer id) { 
     Session session = sessionFactory.getCurrentSession(); 
     Person p = (Person) session.load(Person.class, new Integer(id)); 
     session.delete(p); 
     logger.info("Person deleted successfully, person details="); 

    } 

Und Controller wie unten angegeben.

@RequestMapping("/removePerson") 
    public String remove(HttpServletRequest req) { 
     int id = Integer.parseInt(req.getParameter("id")); 
     ps.removePerson(id); 
     return "redirect:http://localhost:8080/MainAssignment3/"; 

    } 
+0

Dank viel Bhaumik von Datenbank gefüllt wird !!! Es hat wirklich geholfen –

Verwandte Themen