我对Play Framework有点新手,但是我没有看到任何有关如何处理这个问题的文档。基本上,我有一个表格到一个文本文件上传到服务器,这里的相关片段:上传一个空文件会自动产生一个NPE
#{form @Sprockets.upload() , enctype:'multipart/form-data' }
<input type="file" name="sprocketFile" size="chars" />
<input type="submit" value="Submit Sprocket" />
#{/form}
在控制器端,这里的上传方式:
public static void upload(File sprocketFile) {
}
我的问题是,如果用户不打扰填充表单,只是点击“Submit Sprocket”,Play会自动生成一个NPE,因为它试图将表单数据转换为文件。我如何解决这个问题?出现这种情况的控制器验证代码踢,甚至之前,所以索性在@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
我的最终目标是展示一个漂亮的错误信息返回给用户,但玩的就是阻止我从这样做。这与OS X上的Play 1.1相关,如果它有所作为。
你可以提供整个堆栈跟踪和确切的播放版本。 – niels 2010-12-09 20:35:22
@niels:可悲的是,以上是完整的堆栈跟踪。 – 2010-12-10 14:46:31