Grails GSP: загрузка файла без перенаправления - PullRequest
0 голосов
/ 26 сентября 2018

Я разрабатываю форму загрузки с GSP и хотел бы, чтобы сообщение появилось на той же странице после загрузки, чтобы сообщить, была ли загрузка успешной или неудачной.Я не хочу, чтобы страница менялась или обновлялась.

Однако я не могу удержаться на странице и отправить загруженный файл.

Вот пример моего gsp:

<div id="uploadDocumentMessage">

</div>

<g:uploadForm name="uploadDocument" action="uploadDocument" controller="Document">
    <g:select name="type" from="${['document1', 'document2', 'document3']}" noSelection="['':'-Choose a type of document-']" required=""/>
    <input type="file" name="file" required=""/>
    <fieldset class="buttons">
        <g:submitToRemote class="save btn btn-primary" update="uploadDocumentMessage" action="uploadDocument"
                        controller="Document" value="${message(code: 'default.upload.label', args: [''])}" />
        <input class="save" type="submit" value="${message(code: 'default.upload.label', args: [''])}"/>
    </fieldset>
</g:uploadForm>

Вот пример моего контроллера:

def uploadDocument(UploadDocumentCommand command) {
    if (command == null) {
        render 'Invalid input'
        return
    }

    if (command.hasErrors()) {
        render 'You didn\'t fill all fields or the file is not a .pdf.'
        return
    }
    ...
    render 'Upload done'
}

При использовании тега submitToRemote с атрибутом update в формеизменение страницы не происходит, но params.file в контроллере имеет значение null, что приводит к сбою проверки команды.

При использовании обычного тега input html загрузка завершается успешно, но происходит изменение страницы.

Как заставить форму загружать файл, оставаясь на той же странице и обновляя uploadDocumentMessage div с некоторым содержимым?

...