Я новичок в 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;
}
}