表单没有在Hibernate + Spring MVC中进行编辑

时间:2016-08-10 11:48:03

标签: hibernate spring-mvc

我正在开发一个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);

    }

1 个答案:

答案 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/";

    }