В моем проекте grails у меня есть многочастная форма, которая захватывает файл и присваивает имя файла переменной, которая хранится в базе данных.Ошибка серверной формы сервера Grails 500 при нулевом объекте при развертывании, но не на локальном хосте
Когда я запустить приложение с локального хоста с флагом производства я могу успешно отправить форму, однако, после того, как развернуть приложение на GlassFish сервере, я получаю сервере ошибку 500:
Cannot get property 'originalFilename' on null object
I я думаю, что, возможно, это связано с неправильной обработкой мультипартийности. У кого-нибудь есть эта проблема или я могу указать мне в правильном направлении ее решения?
Использование Grails 2.0.4, развернутого на сервере Glassfish 3 с использованием Oracle db.
уместна код из моего действия:
def uploadedFile = request.getFile('filepath')// see if there is a file to upload
if (!uploadedFile?.empty) { // is there a file?
sampleInstance.filepath = "file://///FileLocation/${uploadedFile?.originalFilename}" // save the original filename
}
Форма на GSP:
<g:form action="sample" enctype="multipart/form-data">
<g:textField name="name" value="${sampleInstance?.name}"/>
...
<input type="file" id="filepath" name="filepath" />
<g:submitButton name="submit" value="Submit" /></td>
</g:form>
я принял то, что вы написали во внимание, и обновил свой код. Однако возникает ошибка, существует ли файл при развертывании, но он отлично работает на локальном компьютере. Мне интересно, есть ли что-то, что мне нужно сделать, чтобы оно работало с оракулом. – Universitas
По-прежнему такая же ошибка? –
Изменение кода, как вы заявили, предотвращает ошибку 500, однако основная проблема остается - 'def uploadedFile = request.getFile ('filepath')' всегда приводит к null. Поэтому изменение кода не позволяет ему перейти в оператор if и пытается захватить 'originalFilename'. Я проверил в firebug и есть экземпляр файла. Не уверен, почему он не может пройти. – Universitas