Отправка файла по запросу, так что браузер загружает файл

Я успешно сгенерировал файл XML, используя шаблон FTL. Благодаря Дебмаля Бисвас и его код.

Код сохраняет файл (с указанным именем) в заданном каталоге на диске. Но я бы хотел, чтобы файл (извините за описание) был передан по запросу, чтобы браузер сохранил файл в месте его загрузки. Не могли бы вы помочь?

<transition name="generateSEPAXML2">
    <actions>
        <script>
            <![CDATA[
                        import java.io.*

                        def screenRenderer = ec.screen.makeRender().rootScreen("component://SimpleScreens/screen/SimpleScreens/Accounting/Payment/PaymentSEPA.xml")
                                        .webappName("webroot").renderMode("csv")

                        String renderOutput = screenRenderer.render()

                        String fileName = "platba_" + paymentId + "_SEPA.xml"

                        Writer writer = new FileWriter(fileName)
                        writer.write(renderOutput)
                        writer.close()
            ]]>
        </script>
        <!--<service-call name="update#mantle.account.payment.Payment" in-map="[paymentId:paymentId, statusId:'PmntConfirmed']"/>-->
    </actions>

    <default-response url="."/>
</transition>

1 ответ

Для тех, кто ищет ответ, это сработало для меня:

    <transition name="generateSEPAXML3">
    <actions>
        <script>
            <![CDATA[
                        import java.io.*

                        def screenRenderer = ec.screen.makeRender().rootScreen("component://SimpleScreens/screen/SimpleScreens/Accounting/Payment/PaymentSEPA.xml")
                                        .webappName("webroot").renderMode("csv")

                        String renderOutput = screenRenderer.render()
                        ec.web.sendTextResponse(renderOutput, "text/xml", "platba_" + paymentId + "_SEPA.xml")
            ]]>
        </script>
        <!--<service-call name="update#mantle.account.payment.Payment" in-map="[paymentId:paymentId, statusId:'PmntConfirmed']"/>-->
    </actions>

    <default-response type="none"/>
</transition>

Я использовал метод sendTextResponse для ExecutionContext WebFacade.

Другие вопросы по тегам