我试图映射yes/no,true/false,Y/N在JAX-RS网址查询参数一个布尔值,但它仅映射true/false所有其他的值映射到错误的所有的时间成功.
我理解在映射url查询参数时,jAX-RS会尝试查找获取字符串参数的给定数据类型构造函数,并根据构造函数的操作将查询参数转换为声明的数据类型的对象.Boolean类确实true/TRUE为true,并将所有其他值视为false.
有没有一种方法来映射yes/no, y/n以true/false?
你可以在一个尊重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;
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
访问/booleanTest?value=yes,/booleanTest?value=y或/booleanTest?value=true将返回Result is true,任何其他值将返回Result is false.
| 归档时间: |
|
| 查看次数: |
5362 次 |
| 最近记录: |