我對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