Domanda

modello ....

@Digits(integer=5, fraction=0, message="The value must be numeric and less than five digits")
private int value;

file fagioli ....

<mvc:annotation-driven />

Controller ....

@RequestMapping(value = "/admin/save.htm", method = { RequestMethod.POST })
public ModelAndView saveSection(@Valid @ModelAttribute Section section, BindingResult result) {
     if(result.hasErrors())   {
         return new ModelAndView("admin/editSection", "section", section);
     }

Come posso limitare "valore" al solo numerici? Se entro in qualcosa di diverso da un numero, ottengo questo errore:

  

Impossibile convertire il valore della proprietà di   tipo java.lang.String al tipo desiderato   java.lang.Integer per la proprietà   valore; l'eccezione annidata è   org.springframework.core.convert.ConversionFailedException:   Impossibile convertire il valore "A" dal tipo di   java.lang.String digitare   java.lang.Integer; l'eccezione annidata è   java.lang.IllegalArgumentException:   Impossibile analizzare A

ho visto alcuni post menzione initBinding ma non sono sicuro come usarlo o se sarà anche darmi una mano. Questo deve essere stato risolto prima. C'è un modo per garantire che si tratta di un numero prima che venga rilegato?

In alternativa, se qualcuno potesse inserire la voce corretta messages.properties per ignorare questo errore, che potrebbe funzionare anche per me.

ho provato @Pattern ma che non funziona su interi

È stato utile?

Soluzione

Come lei ha ricordato, è necessario un messaggio user-friendly in messages.properties. È possibile utilizzare uno dei seguenti codici di messaggio (con diversi livelli di selettività):

  • typeMismatch.section.value
  • typeMismatch.value
  • typeMismatch.int
  • typeMismatch

Inoltre, quando non si conosce il codice del messaggio, si può semplicemente stampare il BindingResult -. I suoi rendimenti toString() la descrizione completa degli errori di legame

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top