【问题标题】:Grails multi-part form server 500 error on null object when deployed, but not on local host部署时空对象上的 Grails 多部分表单服务器 500 错误,但不在本地主机上
【发布时间】:2012-06-13 19:53:57
【问题描述】:

在我的 grails 项目中,我有一个多部分表单,它抓取文件并将文件名分配给存储在数据库中的变量。

当我使用生产标志从 localhost 运行应用程序时,我能够成功提交表单,但是,在我将应用程序部署到 glassfish 服务器后,我收到服务器 500 错误:

Cannot get property 'originalFilename' on null object

我认为这可能与未正确处理多部分有关。任何人都有这个问题,或者可以指出我正确的方向来解决它吗?

使用使用 Oracle db 部署到 Glassfish 3 服务器的 Grails 2.0.4。

我的操作中的相关代码:

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>

【问题讨论】:

    标签: grails groovy glassfish


    【解决方案1】:

    如果uploadedFile 为空,那么uploadedFile?.empty 将为空,所以

    if (!uploadedFile?.empty) { // is there a file? 
    

    会做与你期望相反的事情

    你可能应该这样做

    if ( uploadedFile && !uploadedFile.empty) { // is there a file? 
    

    【讨论】:

    • 我已经考虑了您写的内容,并更新了我的代码。但是,无论部署中是否有文件,都会发生错误,但在本地计算机上可以正常工作。我想知道是否需要做一些事情才能使其与 oracle 一起使用。
    • 按照您的说明更改代码可以防止 500 错误,但是,潜在的问题仍然存在 - def uploadedFile = request.getFile('filepath') 始终导致 null。因此更改代码会阻止它进入 if 语句并尝试获取originalFilename。我已经签入了萤火虫,并且有一个文件实例。不知道为什么它无法通过。
    • 好吧,我想我是唯一遇到此问题的人,因为我找不到任何有关它的信息。我现在担心我不会得到我的问题的答案,甚至不会在这篇文章中得到线索。从技术上讲,蒂姆已经回答了我的问题,所以我将接受它并就我的 npe 的具体情况提出另一个问题。
    • @Universitas 很抱歉我突然沉默了,在工作 atm 上工作了很多 :-( 我不明白为什么部署的 glassfish grails 应用程序总是为空...它赢了'虽然与 Oracle 没有任何关系,因为到目前为止它还没有触及数据库......
    • 没问题 Tim :) 我一直很感激你的帮助。 Glassfish 是由 Oracle 制作的,因此由于 Jetty 和 Glassfish 之间的环境,必须存在一些差异。我肯定很困惑。
    猜你喜欢
    • 2015-10-22
    • 1970-01-01
    • 2012-05-12
    • 2022-01-10
    • 2018-10-22
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2015-05-21
    相关资源
    最近更新 更多