Я разрабатываю форму загрузки с 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 с некоторым содержимым?