私は Play フレームワークの初心者ですが、これにアプローチする方法に関するドキュメントは見当たりません。基本的に、サーバーにテキスト ファイルをアップロードするためのフォームがあります。関連するスニペットは次のとおりです。
#{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
私の最終的な目標は、かなりのエラー メッセージをユーザーに表示することですが、Play がこれを妨げています。違いがある場合、これは OS X の Play 1.1 です。