2016-08-10 11 views
0

私はspring mvc + hibernate CRUDアプリケーションで作業しています。フォームがHibernate + Spring MVCで編集用に生成されない

作成し、追加マイ機能が正しく動作しているが、私はホームページから

編集機能を使用する場合、フォームが編集のために読み込ま取得されていません。

idは自動生成されます。

マイコード:

////////////////////////////////コントローラ////// ////////////////////////

@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

また、HQLと基準を使用してみましたが、データベースからデータが移入された後にのみ動作します。 –

答えて

0

以下のようにdaoimplメソッドを更新してください。

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="); 

    } 

以下に示すコントローラ。

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

    } 
+0

Bhaumik!本当に助けになりました –

関連する問題