Использование Bean для фильтрации списка объектов - PullRequest
0 голосов
/ 20 июня 2019

Я довольно новичок в Spring MVC и уже прочитал несколько уроков. В настоящее время я пытаюсь расширить пример приложения, которое я нашел здесь Spring MVC 5 от javaguides . На данный момент у меня появилась страница jsp, которая отображает список счетов и хотела бы отфильтровать счета по дате (start- / enddate). Это работает прямо сейчас, но в настоящее время я застрял, корректно обновляя объект фильтра.

Что я сделал

  1. Я создал POJO DateFilter с двумя Date свойствами
  2. Я объявил bean invoiceFilter в своем сервлете весеннего диспетчера, который вызывает метод init для установки даты начала и окончания для некоторых значений по умолчанию
  3. Я автоматически связал этот bean-компонент в моем контроллере с переменной-членом invoiceFilter
  4. Я передаю фильтр как атрибут модели в методе контроллера, который показывает список счетов
  5. Я добавил форму для ввода начала и конца на моей странице jsp
  6. если кнопка нажата, форма вызывает новый метод changeFilter, который присваивает новую начальную и конечную дату моей переменной члена контроллера invoiceFilter

Вопрос / проблема

Я не думаю, что шаг 6 является правильным способом сделать это, и я хотел бы услышать мнение людей с большим опытом Spring о том, каков типичный подход для этого требования. В идеале я хотел бы заархивировать, что объект invoiceFilter моего контроллера обновляется непосредственно стороной JSP вместо использования дополнительного метода, подобного этому:

@PostMapping("/changeFilter")
public String saveInvoic(@ModelAttribute("invoiceFilter") DateFilter invoiceFilter) {
        this.invoiceFilter = invoiceFilter;
        return "redirect:/invoice/list";
}

Есть ли правильный способ сделать это?

Attachment

Это соответствующий код JSP:

<form:form action="changeFilter" cssClass="form-horizontal"
                method="post" modelAttribute="invoiceFilter">

                <div>
                    <label for="startDate">Start-Date</label>
                    <form:input path="startDate" />
                    <label for="endDate">End-Date</label>
                    <form:input path="endDate" />
                </div>

                <div>                   
                    <div>
                        <form:button>Submit</form:button>
                    </div>
                </div>    
            </form:form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...