gpt4 book ai didi

java - 上传空文件会自动导致 NPE

转载 作者:太空宇宙 更新时间:2023-11-04 08:45:38 27 4
gpt4 key购买 nike

我是 Play 框架的新手,但我没有看到任何有关如何解决此问题的文档。基本上我有一个将文本文件上传到服务器的表单,这是相关的片段:

#{form @Sprockets.upload() , enctype:'multipart/form-data' }
<input type="file" name="sprocketFile" size="chars" />
<input type="submit" value="Submit Sprocket" />
#{/form}

在 Controller 端,这是上传方法:

public static void upload(File sprocketFile) {
}

我的问题是,如果用户不费心填充表单而只是点击“提交 Sprocket”,Play 会在尝试将表单数据转换为文件时自动生成 NPE。我该如何解决这个问题?这种情况甚至在 Controller 验证代码启动之前就会发生,因此简单地添加 @Required 并没有帮助:

@64m30kf1p
Internal Server Error (500) for request POST /sprockets/upload

Oops: NullPointerException
An unexpected error occured caused by exception NullPointerException: null

play.exceptions.UnexpectedException: Errors serializationProblem
at play.data.validation.ValidationPlugin.save(ValidationPlugin.java:146)
at play.data.validation.ValidationPlugin.onActionInvocationResult(ValidationPlugin.java:65)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:293)
at Invocation.HTTP Request(Play!)
Caused by: java.lang.NullPointerException
at play.data.validation.ValidationPlugin.save(ValidationPlugin.java:136)
... 3 more

我的最终目标是向用户显示一条漂亮的错误消息,但 Play 阻止我这样做。这是 OS X 上的 Play 1.1 的情况(如果有区别的话)。

最佳答案

可能的解决方法是使用 @Before-Interceptor。在那里您可以检查参数并重定向到错误页面。这应该有效。请创建票证 http://play.lighthouseapp.com带有一个小示例应用程序。

关于java - 上传空文件会自动导致 NPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4402530/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com