SlandShow
@SlandShow
70% of my body is made of movies.

Как мне реализовать выборку по данным, которые пользователь вводит в JSP форме?

У меня есть Entity (Schedule), есть service (ScheduleService), есть DAO (ScheduleDAO).

Весь функционал работает, проверено. И главная проблема заключается вот в чём:

Я написал простую JSP формочку, куда я ввожу номер станции, откуда идёт поезд, номер станции, куда идёт поезд и время отправления. Вот эта форма:
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>Actual train traffic</title>
</head>
<body>

    <form:form action="scheduleByStationsAndDate" modelAttribute="schedule">

        Station departure:
        <form:input path="stationDeparture"/>

        Station arrive:
        <form:input path="stationArrival"/>

        Time departure:
        <form:input path="dateDeparture"/>

        <br><br>
        <input type="submit" value="Submit">

    </form:form>


</body>
</html>


И у меня такой вопрос, как мне написать маппинг в моём контроллере, который будет вытаскивать ведённые пользователем данные?

Например, вот:
@RequestMapping("/scheduleByStationsAndDate")
    public String getScheduleByStationsAndDate(@ModelAttribute("schedule")Schedule schedule) {
        ...
       //List<Schedule> schedules = scheduleService.getByStationsAndDate(schedule); примерно так работает сервис
        return JspFormNames.SCHEDULE_INPUT_FOR_STATIONS_AND_DATE;
    }


Я не совсем уверен, что у меня правильный метод маппинга в контроллере. Вообще, тут же должен происходить POST метод?

Немного запутался, буду признателен, если разъясните
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
zolt85
@zolt85
Программист
Форма с клиента уходит методом GET, либо POST, смотря что указано в атрибуте method тега form. По-умолчанию будет GET. Данные формы будут передаваться в URL-е, который указан в атрибуте action.
В Вашем случае строка запроса будет иметь вид
`scheduleByStationsAndDate/?stationDeparture="data"&stationArrival="data"` ну и так далее.
Таким образом, чтобы принять это все на сервере надо писать примерно так:
@RequestMapping(value="scheduleByStationsAndDate", params=["stationDeparture", "stationArrival", "dateDeparture"], method=RequestMethod.GET)
@ResponseBody
public String getScheduleByStationsAndDate(
    @RequestParam("stationDeparture") String stationDeparture, 
    @RequestParam("stationArrival") String stationArrival, 
    @RequestParam("dateDeparture") Date dateDeparture
) { ... }


В случае POST запроса, метод может выглядеть так:
@RequestMapping(value ="scheduleByStationsAndDate", method = RequestMethod.POST)
@ResponseBody
public String getScheduleByStationsAndDate(@RequestBody MyForm form) {...}

Основная мысль думаю понятна. MyForm в данном случае обычный POJO в который Spring попытается смаппить данные пришедшие с клиента, в Вашем случае MyForm может выглядеть так
public class MyForm {

    private String stationDeparture;
    
    private String stationArrival;

    private Date dateDeparture;

    //тут еще геттеры/сеттеры, ну всё как мы любим
}


Как-то так ...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽