2017-06-24 4 views
2
私は

は、文字列のリストである

@GetMapping(value = "/fruits") 
public List<String> fruits(
@RequestParam(value = "fruitType", defaultValue = "") String fruitType) { 

    final ImmutableList<String> fruitTypes = 
      ImmutableList.of("Citrus", "Seed Less", "Tropical"); 

    if (!fruitTypes.contains(fruitType)) { 
     throw new RuntimeException("Invalid Fruit type"); 
    } 

    final ImmutableList<String> fruits = 
      ImmutableList.of("Apple", "Banana", "Orange"); 

    //filter fruits based on type, then return 
    return fruits; 
} 

は、私はこの使用して正規表現をチェックする@Patternを使用することができます知っている@Validアノテーションで以下のコントローラにハードコードされ、検証を交換しようとしています

fruitTypeのリストが静的でない場合 これを行うには他の方法がありますか?

+0

コントローラ顧問のサンプルクラスです。 –

答えて

0

カスタムリストに対して検証しているので、これを行う方法はありません。しかし、タイプを検証するために、あなたはenumとしてFruitTypeを定義し、@RequestParam、例えばでそれに注釈を付けることができます。:

enum FruitType{ 
    Apple, 
    Banana, 
    Orange; 
} 

public List<String> fruits(
@RequestParam(value = "fruitType") FruitTypefruitType) { 
//Implementation 
+0

"' fruitType'のリストは静的ではありません " – Andrew

0

あなたが値を検証するために列挙型を使用することができますし、@RestControllerAdviceを使用することができますカスタムエラーをスローします。サンプルコードは以下の通りです。

enum FruitType { 
     Apple, Banana, Orange; 
    } 

    @GetMapping(value = "/fruits") 
    public List<String> fruits(@RequestParam(value = "fruitType") FruitType fruitType) { 

     // You can put your business logic here. 
     return fruits; 
    } 

//以下は、値の動的なリストをagains値をチェックし、独自の制約のアノテーションや関連するバリデータを書く。..

@RestControllerAdvice 
    public class GlobalExceptionHandler { 
    @ExceptionHandler(MethodArgumentTypeMismatchException.class) 
     public ResponseEntity<MpsErrorResponse> exceptionToDoHandler(HttpServletResponse response, 
                    MethodArgumentTypeMismatchException ex) throws IOException { 

      return new ResponseEntity<>(new MpsErrorResponse(HttpStatus.NOT_FOUND.value(), "Invalid Fruit type"), 
        HttpStatus.NOT_FOUND); 
     } 
    } 
+0

私はそれについて考えましたが、fruitTypeが空白を持つことがわかりましたので、そのタイプの1つとして「Seed Less」を追加しました。また、これは静的なリストではありません。私は静的なリストとして静的なリストに含めました。 –

関連する問題