Je suis un peu d'un débutant au cadre de lecture, mais je ne vois pas de documentation sur la façon d'aborder ce sujet. Fondamentalement, j'ai un formulaire pour télécharger un fichier texte sur le serveur, voici l'extrait pertinent:un fichier vide Uploading entraîne automatiquement un NPE
#{form @Sprockets.upload() , enctype:'multipart/form-data' }
<input type="file" name="sprocketFile" size="chars" />
<input type="submit" value="Submit Sprocket" />
#{/form}
Du côté du contrôleur, voici la méthode de téléchargement:
public static void upload(File sprocketFile) {
}
Mon problème est que si l'utilisateur ne dérange pas de remplir le formulaire et frappe juste "Soumettre Sprocket", Play génère automatiquement un NPE comme il essaie de convertir les données de formulaire dans un fichier. Comment je peux contourner cela? Cela se produit avant même le code de validation du contrôleur entre en jeu, donc tout simplement jeter dans un @Required ne permet pas:
@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
Mon objectif final est de montrer un joli message d'erreur à l'utilisateur, mais le jeu me empêche de faire cela. C'est avec Play 1.1 sur OS X si cela fait une différence.
Pouvez-vous fournir l'ensemble de la pile et la version exacte du jeu? – niels
@niels: Malheureusement, ce qui précède est la trace de la pile complète. –
Crazy J'ai vérifié le code de jeu et ne peux pas voir ce qui pourrait être nul là: -/Le jeu-coreteam semble aujourd'hui inactif alors soyez patient. – niels