2014-12-23 2 views
4

Я пытаюсь сопоставить yes/no, true/false, Y/N в булево в параметре запроса URL JAX-RS, но она отображает только true/false успешно, все остальные значения преобразуются в ложь все время.Mapping Да/Нет, чтобы Boolean в ReST параметра API запроса

Я понимаю, что при сопоставлении параметров запроса url jAX-RS пытается найти данный конструктор типа данных, который принимает строковый аргумент и преобразует параметр запроса в объект объявленного типа данных на основе того, что делает конструктор. Boolean class принимает значение true/TRUE как истинный и обрабатывает все остальные значения как false.

Есть ли способ на карте yes/no, y/n до true/false?

ответ

5

Вы можете обернуть булево значение в чем-то, что соответствует the QueryParam javadoc. В следующем примере реализации я номер 3:

@Path("/booleanTest") 
public class TestClass { 

    @GET 
    public String test(@QueryParam("value") FancyBoolean fancyBoolean) { 
     String result = "Result is " + fancyBoolean.getValue(); 
     return result; 
    } 

    public static class FancyBoolean { 
     private static final FancyBoolean FALSE = new FancyBoolean(false); 
     private static final FancyBoolean TRUE = new FancyBoolean(true); 
     private boolean value; 

     private FancyBoolean(boolean value) { 
      this.value = value; 
     } 

     public boolean getValue() { 
      return this.value; 
     } 

     public static FancyBoolean valueOf(String value) { 
      switch (value.toLowerCase()) { 
       case "true": 
       case "yes": 
       case "y": { 
        return FancyBoolean.TRUE; 
       } 
       default: { 
        return FancyBoolean.FALSE; 
       } 
      } 
     } 
    } 
} 

Доступ к /booleanTest?value=yes, /booleanTest?value=y или /booleanTest?value=true будет возвращать Result is true, любое другое значение будет возвращать Result is false.

Смежные вопросы