私は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>
また、HQLと基準を使用してみましたが、データベースからデータが移入された後にのみ動作します。 –