我正在开发一个spring mvc + hibernate CRUD应用程序。
我的创建和添加功能正常,但是当我使用
时从主页编辑功能,表单不会被填充以进行编辑。
自动生成ID。
我的代码:
////////////////////////////////控制器////////////// ////////////////
def create
# actually process the booking
@event = Event.find(params[:event_id])
@booking = @event.bookings.new(booking_params)
@booking.user = current_user
#@total_amount = @booking.quantity.to_f * @event.price.to_f
Booking.transaction do
if @event.bookings.count == @event.number_of_spaces
flash[:warning] = "Sorry, this event is fully booked."
raise ActiveRecord::Rollback, "event is fully booked"
else
if @booking.save
# CHARGE THE USER WHO'S BOOKED
# #{} == puts a variable into a string
Stripe::Charge.create(amount: @event.price_pennies, currency: "gbp",
card: @booking.stripe_token, description: "Booking number #{@booking.id}")
flash[:success] = "Your place on our event has been booked"
redirect_to event_path(@event)
else
flash[:error] = "Payment unsuccessful"
render "new"
end
if @event.is_free?
@booking.save!
flash[:success] = "Your place on our event has been booked"
redirect_to event_path(@event)
end
end
end
end
//////////////////////////// DAOImpl ////////////////// /////
@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";
}
}
/////////////////////////////////////的index.jsp /////// ////////////////////
@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);
}
答案 0 :(得分: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/";
}