J'ai un contrôleur de ressort qui prend plusieurs BigDecimal
RequestParams. Mes paramètres régionaux d'application sont en_US mais pour cette méthode de contrôleur, j'ai besoin de lier et de convertir ces paramètres BigDecimal
dans les paramètres régionaux de_DE (par exemple, # ###, ##> DOT pour le regroupement et COMMA pour le séparateur décimal). Ces valeurs BigDecimal
proviennent des zones de texte de l'interface utilisateur et sont déjà au format de_DE
. Voici mon code de contrôleur qui échoue avec l'erreur suivante:Printemps MVC Controller NumberFormat Modèle d'annotation Problème en BigDecimal
"Failed to convert value of type 'java.lang.String' to required type 'java.math.BigDecimal'; nested exception is java.lang.NumberFormatException"
@RequestMapping(value = "/create", method = RequestMethod.POST)
public ModelAndView create(@RequestParam("referenceNumber") String referenceNumber, @RequestParam("startDate") @DateTimeFormat(pattern="dd-MM-yyyy") Date startDate, @RequestParam("amount1") @NumberFormat(pattern = "#.###,##") BigDecimal amount1, @RequestParam("amount2") @NumberFormat(pattern = "#.###,##") BigDecimal amount2) {
// Do something and return
}
Spring ne tient pas compte en quelque sorte mon modèle numberformat. Veuillez noter que l'annotation DateTimeFormat
fonctionne comme prévu. l'analyse du paramètre startDate sous forme correcte.
Toute aide serait appréciée.
Merci.
Vous pouvez déboguer une partie javascript de votre code. Je suppose que vous envoyez une valeur de chaîne. Vous pouvez le convertir en numéro dans votre code javascript –
@ user3087839 javascript n'est pas pertinent ici; Bien sûr, j'envoie un tas de ficelles du côté de la vue. L'envoi d'un formulaire permet d'envoyer des paires de valeurs de clé de chaîne d'un côté à l'autre. Je demande comment convertir ces valeurs de paramètre de chaîne d'une manière personnalisée. – Ahmet
L'annotation fonctionne car elle génère une erreur comme NumberFormatException. C'est bizarre d'envoyer une chaîne et d'essayer de la formater plus tard. –