Обновление функционала не работает должным образом - PullRequest
0 голосов
/ 27 июня 2018

Я новичок в Spring MVC с Hibernate. Я написал простое приложение, но я не понимаю, что не так в этом коде.

Функциональность обновления не работает должным образом. Upto GET метод работает нормально, ниже URL для того же:

http://localhost:8080/TestSample/forms/updateReq/1

После нажатия кнопки отправки метод POST не работает. Вот ссылка:

http://localhost:8080/TestSample/forms/updateReq/addReqNo

Это мой контроллер:

package com.sample.controllers;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.objenesis.instantiator.perc.PercSerializationInstantiator;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.sample.Service.AddMoreService;
import com.sample.model.AddMoreList;
import com.sample.model.AddMoreModel;
import com.sample.model.AddNoOfReq;

@Controller
public class AddMoreFieldController {

    @Autowired
    private AddMoreService addMoreService;

    @RequestMapping(value = "/addReqNo", method = RequestMethod.GET)
    public String testPage(AddNoOfReq addNoOfReq, Model model) {
        model.addAttribute("addNoOfReq", addNoOfReq);
        model.addAttribute("reqList", addMoreService.getReq(addNoOfReq));
        return "testPage";
    }

    @RequestMapping(value = "/addReqNo", method = RequestMethod.POST)
    public String testPageProcess(@ModelAttribute AddNoOfReq addNoOfReq, Model model) {
        for (int i = 0; i <= addNoOfReq.getReqName(); i++) {
            if (addNoOfReq.getReqNo() == 0) {
                addMoreService.addReq(addNoOfReq);
            } else {
                addMoreService.updateReq(addNoOfReq);
            }
        }
        model.addAttribute("addNoOfReq", addNoOfReq);

        model.addAttribute("reqList", addMoreService.getReq(addNoOfReq));
        return "redirect:/forms/testPage";
    }

    @RequestMapping(value = "/updateReq/{reqNo}", method = RequestMethod.GET)
    public String editReq(@PathVariable("reqNo") int reqNo, Model model) {

        AddNoOfReq addNoOfReq = new AddNoOfReq();
        model.addAttribute("addNoOfReq", addMoreService.findElementById(reqNo));
        model.addAttribute("reqList", addMoreService.getReq(addNoOfReq));

        return "testPage";
    }
}

А это мой DAO:

package com.sample.Dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.sample.model.AddMoreModel;
import com.sample.model.AddNoOfReq;

@Repository
public class AddMoreDaoImpl implements AddMoreDao {

    @Autowired
    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    protected Session getSession() {
        return sessionFactory.openSession();
    }

    @Override
    public void add(AddMoreModel addMoreModel) {

    }

    @Override
    public void addReq(AddNoOfReq addNoOfReq) {
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        if (addNoOfReq != null) {
            session.saveOrUpdate(addNoOfReq);

            tx.commit();

            session.close();
        }
    }

    @Override
    public AddNoOfReq findElementById(int rId) {
        AddNoOfReq addNoOfReq = (AddNoOfReq) getSession().get(AddNoOfReq.class, rId);
        return addNoOfReq;
    }

    @Override
    public void updateReq(AddNoOfReq addNoOfReq) {
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        if (addNoOfReq != null) {
            session.update(addNoOfReq);

            tx.commit();

            session.close();
        }

    }

    @Override
    public List getReq(AddNoOfReq addNoOfReq) {
        Session session = sessionFactory.openSession();
        List<AddNoOfReq> list = new ArrayList<>();
        Query query = session.createQuery("from AddNoOfReq");

        list = query.list();
        session.close();
        return list;
    }
}

1 Ответ

0 голосов
/ 27 июня 2018

Это не работает, потому что у вас нет сопоставления для этого пути:

http://localhost:8080/TestSample/forms/updateReq/addReqNo

Чтобы выполнить метод POST для этого URL, вам нужна функция типа:

@RequestMapping(value = "/updateReq/{reqNo}", method = RequestMethod.POST)
public String editReq(@PathVariable("reqNo") int reqNo, Model model) {

    AddNoOfReq addNoOfReq = new AddNoOfReq();
    model.addAttribute("addNoOfReq", addMoreService.findElementById(reqNo));
    model.addAttribute("reqList", addMoreService.getReq(addNoOfReq));

    return "testPage";
}

Но у вас то же самое только с методом = RequestMethod.GET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...