powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring и выгрузка в Excel
15 сообщений из 15, страница 1 из 1
Spring и выгрузка в Excel
    #38174950
Фотография Щиче
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано, форма с фильтром. Надо выгрузить в Excel текущее содержание страницы (только данных конечно). Для этого в контроллер надо перевести объект фильтра.

Код: html
1.
 <sf:form id="searchForm" method="post" modelAttribute="journalData">...



Метод в контроллере обрабатывающий форму.
Код: java
1.
public ModelAndView filter(@ModelAttribute("journalData") JournalFilter filter, BindingResult bindingResult) {



Метод выгрузки в Excel
Код: java
1.
2.
3.
4.
ResponseEntity<byte[]>(Model model) {
        // f == null
        JournalFilter f=(JournalFilter)(model.asMap().get(JOURNAL_DATA));
        ...



Проблема заключается в том, что я не понимаю как без JavaScript передать ему объект фильтра. Переменная f оказывается null. Submit делать нельзя, так как я попаду в метод filter. Чувствую, что решение тривиально, но не нахожу.
...
Рейтинг: 0 / 0
Spring и выгрузка в Excel
    #38174990
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычная ошибка в проектировании, имхо. Должно быть 2 метода в контроллере - один для выдачи формы фильтра без результата, второй для выдачи результата (опционально возвращающий ту же форму)
...
Рейтинг: 0 / 0
Spring и выгрузка в Excel
    #38174993
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или просто возвращайте пустую ту же форму если filter=null
...
Рейтинг: 0 / 0
Spring и выгрузка в Excel
    #38175004
Фотография Щиче
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагман,

Я вроде так и делаю:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
/**
     * Форма по умолчанию. <p>Данные и фильтр отсутствуют.</p>
     *
     * @return
     */
    @RequestMapping(method = RequestMethod.GET)
    public ModelAndView get(Model model) {
       JournalFilter filter = new JournalFilter();
       ...
       // Формирование модели.
        ModelAndView mv = new ModelAndView(FORM_NAME);
       mv.addObject(JOURNAL_DATA, filter);



С формой проблем нет. Фильтр надо как-то дать методу выгрузки в Excel.
...
Рейтинг: 0 / 0
Spring и выгрузка в Excel
    #38175152
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@RequestMapping("/form")
public ModelAndView filter(){
//вернуть страницу с формой
}

@RequestMapping("/export")
public ResponseEntity<byte[]> handle(@ModelAttribute("journalData") JournalFilter filter ){
// вернуть ResponseEntity
}
...
Рейтинг: 0 / 0
Spring и выгрузка в Excel
    #38175153
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
форма должна делать submit в /export , соответственно
...
Рейтинг: 0 / 0
Spring и выгрузка в Excel
    #38175715
Фотография Щиче
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагман,

А вы примерный код можете привести?
...
Рейтинг: 0 / 0
Spring и выгрузка в Excel
    #38175722
Фотография Щиче
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конкретнее JSP, где форма может иметь несколько URL в зависимости от условий
...
Рейтинг: 0 / 0
Spring и выгрузка в Excel
    #38176072
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может я чего то недопонял, вроде достаточно стандартная ситуация, прописать в form action="урл хендлера который делает экспорт" - не то?
...
Рейтинг: 0 / 0
Spring и выгрузка в Excel
    #38176128
Фотография Щиче
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагман,

У меня данные показываются на странице по срабатыванию фильтра. Соответсвенно, метод котроллера filter показывает пользователю данные с постраничной разбивкой. Затем появляется необходимость выгрузить данные в Эксель. Появляется ещё один метод. Этому методу надо как-то подбросить тот же объект фильтра, чтобы он понял что ему выгружать. В этом и проблема. Как? Форма то показывает на метод filter, как она и должна.
...
Рейтинг: 0 / 0
Spring и выгрузка в Excel
    #38176174
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в кнопку сабмита можно добавить значение, не помню точно как оно будет выглядеть на стороне модели, т.е. что-то вроде этого:
Код: java
1.
<INPUT type="submit" value="html"> <INPUT type="submit" value="excel">



или у вас проблема ещё и в том что критерий удаляется после срабатывания фильтра?
...
Рейтинг: 0 / 0
Spring и выгрузка в Excel
    #38176200
Фотография Щиче
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Метод filter возвращает ModelAndView как бы его не вызывали. Следовательно, он может возвратить лишь саму view и её атрибуты. А надо файл.

Я вышел из положения сделав ещё одну форму, которой я отдаю тот же фильтр и все компоненты которой, кроме кнопки submit с надписью "Выгрузить в Эксель" невидимы.
...
Рейтинг: 0 / 0
Spring и выгрузка в Excel
    #38176205
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЩичеЯ вышел из положения сделав ещё одну форму, которой я отдаю тот же фильтр
гениально. по-моему именно это предлагалось сделать с самого начала. то что это должна делать одна и та же форма, ты себе сам выдумал.
...
Рейтинг: 0 / 0
Spring и выгрузка в Excel
    #38176213
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щиче,

могли написать public Object filter(...)
...
Рейтинг: 0 / 0
Spring и выгрузка в Excel
    #38176215
Фотография Щиче
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагман,

Уже писал.:) Так вообще не работает.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring и выгрузка в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]