Проблема шаблона CRUD JDB C с операцией редактирования - PullRequest
0 голосов
/ 30 января 2020

У меня проблема с операцией редактирования CRUD. Когда я нажимаю Edit, который написан таким образом в jsp файле

 <a href="editMedicines?id=${medicines.id}">Edit</a>

, я получаю сообщение об ошибке

HTTP Status 404 – Not Found
Type Status Report
Message /Firstaidkit/editMedicines
Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

EditController

@WebServlet(value = "/editMedicines")
    public class MedicinesEditController extends HttpServlet {
        private static final long serialVersionUID = 1L;

    @RequestMapping(method = RequestMethod.GET)
    public ModelAndView editMedicines(HttpServletRequest request) {
        int medicinesId = Integer.parseInt(request.getParameter("id"));
        Medicines medicines = GenericDAO.get(medicinesId);
        ModelAndView model = new ModelAndView("editform");
        model.addObject("medicines", medicines);
        return model;
    }
}

GenericDAO

public interface GenericDAO <T, PK extends Serializable> {
    //CRUD
    T create(T newObject);
    T read(PK primaryKey);
    public void update(Medicines medicines);
    public void delete(T id);
    List<T> getAll();
    public static Medicines get(int medicinesId) {
        return null;
    }
}

MedicinesDAOImpl

 private final static String UPDATE_MEDICINES = 
          "UPDATE medicines SET name=:name, drugform=:drugform, quantity=:quantity, expiration_date=:expiration_date, description=:description WHERE id_medicines=:id_medicines;";

        @Override
        public void update(Medicines medicines) {
                jdbcTemplate.update(UPDATE_MEDICINES, medicines.getName(), medicines.getDrugForm(),
                        medicines.getQuantity(), medicines.getExpirationDate(), medicines.getId());
            } 
        }

editform. jsp

<form class="form-signin" method="post" action="editMedicines">

1 Ответ

0 голосов
/ 30 января 2020

Я считаю, что проблема в том, что URL, с которым связан ваш якорь, не существует. У вас должна быть аннотация, определяющая путь к вашему MedicinesEditController на уровне класса. Предполагая, что вы хотите, чтобы путь к этой конечной точке был /Firstaidkit/editMedicines, должно работать следующее:

@Path(value = "/Firstaidkit") // possibly a different but similar annotation
public class MedicinesEditController extends HttpServlet {

    @RequestMapping(value = "/editMedicines", method = RequestMethod.GET)
    public ModelAndView editMedicines(HttpServletRequest request) {
        int medicinesId = Integer.parseInt(request.getParameter("id"));
        Medicines medicines = GenericDAO.get(medicinesId);
        ModelAndView model = new ModelAndView("editform");
        model.addObject("medicines", medicines);
        return model;
    }

}

В противном случае вам нужно изменить ссылку якоря для ссылки на root приложения, а затем по вашей конечной точке /editMedicines. Это можно сделать с помощью следующего якоря, как описано здесь :

<a href="/editMedicines?id=${medicines.id}">Edit</a>

Редактировать: Попробуйте следующее

MedicinesEditController

@RequestMapping(value = "/editMedicines")
    public class MedicinesEditController extends HttpServlet {
        private static final long serialVersionUID = 1L;

    @GetMapping
    public ModelAndView editMedicines(HttpServletRequest request) {
        int medicinesId = Integer.parseInt(request.getParameter("id"));
        Medicines medicines = GenericDAO.get(medicinesId);
        ModelAndView model = new ModelAndView("editform");
        model.addObject("medicines", medicines);
        return model;
    }
}

editform. jsp

<form class="form-signin" method="GET" action="editMedicines">

anchor

(примечание: попробуйте эти варианты, так как ссылка меняется в зависимости от того, где вы находитесь, когда Вы щелкаете по нему. Просмотрите этот стек , чтобы определить правильную ссылку)

 <a href="editMedicines?id=${medicines.id}">Edit</a>
 <a href="/editMedicines?id=${medicines.id}">Edit</a>
 <a href="../editMedicines?id=${medicines.id}">Edit</a>
...