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>
Ich habe auch versucht HQL und Kriterien, aber die wird nur funktionieren, nach meiner Form –