2017-12-10 5 views
0

エンドポイントのPathVariableを検証する必要があります。実際には、それはJava自体によって行われるため、検証ではありません。たとえば、PathVariableタイプがIntegerで、Stringを渡すと、次のようなものがスローされます。Failed to convert value of type [java.lang.String] to required type [java.lang.Long]... - これは応答メッセージです。カスタムメッセージを設定するにはどうすればいいですか(例:年齢は数字でなければなりません)?カスタムバリデーターを作成してアノテーションで使用できることはわかっていますが、多くのエンドポイントがあるため、すべての単一PathVariableに対して非常に多くのバリデーターを作成する必要があります。ほんの簡単な方法。私が間違っている?スプリングブートパス変数検証メッセージ

+0

あなたがPathParamを意味しますか? PathVariableとして 'String'を入力するだけで、別のエンドポイントを意味するので、404を与える必要があります。 – Synch

答えて

0

あなたはスローされMethodArgumentTypeMismatchExceptionのハンドラを作成することができます。

@RestControllerAdvice 
public class ExceptionControllerAdvice { 
    @Inject 
    private MessageSource messageSource; 

    @ExceptionHandler(MethodArgumentTypeMismatchException.class) 
    @ResponseStatus(HttpStatus.BAD_REQUEST) 
    public String handleTypeMismatch(MethodArgumentTypeMismatchException e) {   
     // Return custom message from messageSource using e.getRequiredType() 
    } 
} 
関連する問題