Ошибка экспорта Excel с первой попытки - PullRequest
0 голосов
/ 27 июня 2018
 def exportExcel(){
        if(!params.max) params.max = 10

        if(params?.type && params.type != "html"){

            response.contentType = grailsApplication.config.grails.mime.types[params.type]
            response.setHeader("Content-disposition", "attachment; filename=agents.${params.extension}")

            List fields = ["orgTypeId", "name"]
            Map labels = ["orgTypeId":"DP Id", "name":"Name"]

            def upperCase = { domain, value ->
                return value.toUpperCase()
            }

            Map parameters = [title: "Agent List", "column.widths":[0.15, 0.4]]
            Map formatters = [name: upperCase]

            exportService.export(params.type, response.outputStream, Agent.list(params), fields, labels, formatters, parameters)
        }

        render(view: 'index',model: [organizationTypeCount: Agent.count(), organizationType: Agent.list(params)])

    }

Это мой код для экспорта в Excel. Когда я нажимаю на кнопку экспорта. Это показывает ошибку Failed-Network. Если я возобновлю загрузку, она будет загружена.

Это ошибка: java.lang.IllegalStateException: getOutputStream() has already been called for this response

enter image description here

enter image description here

Пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 27 июня 2018

Вы не можете записать данные вложения в выходной поток, а затем отобразить представление индекса; он пытается отобразить ваше представление в том же потоке вывода, в который вы уже отправили вложение. Если вы удалите строку, отображающую представление индекса, ваш код должен работать так, как ожидалось.

Если вам нужно сгенерировать вложение / загрузить И перейти к другому представлению в вашем браузере, вам потребуется отправить два запроса для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...