I getメソッドでこのコントローラを持っているようrecive 3 PARAMATERSこと java.lang.Integer
@GetMapping(path = Constantes.CONSULTAR_NODO_SUCESOR)
public ConsultarNodoSucesorResponse consultarNodoSucesor(@RequestHeader HttpHeaders headerRequest,
@RequestParam(required = false) Integer idArbol,
@RequestParam(required = false) Integer nivelFormulario,
@RequestParam(required = false) Integer idSucesor,
@RequestParam(required = false) String rutaRelacion,
@RequestParam(required = false) String tipoRelacion,
HttpServletResponse headerResponse) {
ConsultarNodoSucesorRequest request = new ConsultarNodoSucesorRequest(idArbol, nivelFormulario, idSucesor,
rutaRelacion, tipoRelacion);
return service.consultarNodoSucesor(headerRequest, request, headerResponse);
}
cosumingすると、サーバーが不正な要求、完全なエラー以下のコード400を返しています
Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested exception is java.lang.NumberFormatException: For input string: \"4111111111\
私はPARAMTERに送信していidArbol
た値4111111111をしかし、私はそれは罰金を作品1044444444のように、同じ偶然に値に送るとき、それは一方で、仕事を文句を言いません。
なぜこれが事ありますか?Aの最大値は何ですかInteger
値とは異なり1044444444
値4111111111
のためには大きすぎるint
(したがってInteger
、)データ型は、したがって、として理解されますString
。値は、整数の許容範囲をオーバーフロー。
参照してください。プリミティブデータ型を:
INTは:デフォルトでは、intデータ型は、32ビット-231の最小値及び231-1の最大値を有する2の補数整数を、署名されています。
春にはそのように振る舞うなぜあなたは不思議に思うかもしれません。これは、型変換の春のいくつかのアノテーションの機能String
のデフォルト値です:
文字列ベースの要求入力を表すいくつかの注釈付きコントローラメソッドの引数(例えば、は
@RequestParam
、@RequestHeader
、@PathVariable
、@MatrixVariable
、および@CookieValue
引数が文字列以外のものとして宣言されている場合)タイプの変換を必要とすることができます。このような場合のために、型変換が自動的に設定コンバータに基づいて適用されます。デフォルトでは、単純型(
int
、long
、Date
、など)がサポートされています。あなたはを通して型変換をカスタマイズすることができますWebDataBinder
(参照DataBinder
)またはでフォーマッタを登録することでFormattingConversionServic
電子。参照してください。春のフィールドの書式を。