質問

私がプレイフレームワークへの初心者のビットんだけど、私はこれにアプローチする方法上の任意のドキュメントを参照してくださいしないでください。基本的に私は、サーバーにテキストファイルをアップロードするためのフォームを持って、ここでは関係の抜粋です。

#{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) {
}
私の問題は、ユーザーがフォームを埋める気にしてばかりヒットしない場合は、「スプロケットを提出する」それがファイルにフォームデータを変換しようとすると自動的に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上でプレイ1.1である。

役に立ちましたか?

解決 3

私は、問題の原因を見つけた、それは私自身のせいです。手の問題は当然、私は元の質問には含まれていませんでしたソースの一部です。ここではサンプルコードがあります:

public static void upload(@Required File sprocketFile) {
try {           
  if (sprocketFile == null || validation.hasErrors()) {
    validation.addError("Upload Error", "Please select a sprocket to upload", sprocketFile);
    params.flash();
    validation.keep();                          
    index();
}

問題は)(validation.addErrorに最後のパラメータとしてsprocketFileを使用していました。 NetBeansでデバッグモードでアプリケーションを実行しながら、私はこれを発見しました。あなたの助けの@nielsいただきありがとうございます。

他のヒント

可能性のある問題を回避するには、前・インターセプター@だろう。あなたは、エラーページにPARAMTERとリダイレクトが確認できます。これは動作するはずです。小さなサンプルアプリケーションで http://play.lighthouseapp.comするでチケットを作成してください。

は、フォームとコントローラ一致していません。

<input type="file" name="sprocketFile" size="chars" />
あなたはsprocketFile

という名前の変数にFileオブジェクトをアップロードしている言います

しかし、あなたのコードは、あなたがlicenceFile

という名前のオブジェクトに格納していると言います
public static void upload(File licenseFile) {

2試合を作ってみます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top