为什么Spring3.2只根据请求参数是“0”还是“1”来Map我的布尔值?
@RequestParam(required= false, defaultValue = "false") Boolean preview
当requestparam为"?preview=1"时,预览将仅为"true",这是wierd我希望它是"?preview=true"。我该怎么做呢?
"?preview=1"
"true"
"?preview=true"
8ftvxx2r1#
我想我们可能需要更多的细节才能有效地回答你的问题。我的Spring 3.2代码沿着:
@RequestMapping(value = "/foo/{id}", method = RequestMethod.GET) @ResponseBody public Foo getFoo( @PathVariable("id") String id, @RequestParam(value="bar", required = false, defaultValue = "true") boolean bar) { ... }
Spring正确地将?bar=true、?bar=1或?bar=yes解释为真,将?bar=false、?bar=0或?bar=no解释为假。True/False和yes/no值忽略大小写。
?bar=true
?bar=1
?bar=yes
?bar=false
?bar=0
?bar=no
cwtwac6a2#
Spring应该能够将 true、1、yes 和 on 解释为true布尔值...检查StringToBooleanConverter。
true
pzfprimi3#
您可以使用Jackson的JsonDeserialize注解,它简短而简洁创建以下反序列化程序:
public class BooleanDeserializer extends JsonDeserializer<Boolean> { public BooleanDeserializer() { } public Boolean deserialize(JsonParser parser, DeserializationContext context) throws IOException { return !"0".equals(parser.getText()); } }
并将注解添加到DTO中,如下所示:
public class MyDTO { @NotNull @JsonDeserialize(using = BooleanDeserializer.class) private Boolean confirmation; }
ssm49v7z4#
我们可以用
@GetMapping("/getAudioDetails/organizations/{orgId}/interactions/{interactionId}") public ResponseEntity<?> getAudioDetails(@PathVariable("orgId") String orgId,@PathVariable("interactionId") String interactionId, @RequestParam(name = "verbose", required = false, defaultValue = "false") boolean verbose){ System.out.println(verbose); return null; }
其中verbose是一个布尔标志,默认情况下为false,可以从下面的API调用中引用。
wxclj1h55#
我想您在@RequestParam中缺少value=“preview”,因此Spring总是将变量preview设置为false,因为这是默认值。第一个月
5条答案
按热度按时间8ftvxx2r1#
我想我们可能需要更多的细节才能有效地回答你的问题。
我的Spring 3.2代码沿着:
Spring正确地将
?bar=true
、?bar=1
或?bar=yes
解释为真,将?bar=false
、?bar=0
或?bar=no
解释为假。True/False和yes/no值忽略大小写。
cwtwac6a2#
Spring应该能够将 true、1、yes 和 on 解释为
true
布尔值...检查StringToBooleanConverter。pzfprimi3#
您可以使用Jackson的JsonDeserialize注解,它简短而简洁
创建以下反序列化程序:
并将注解添加到DTO中,如下所示:
ssm49v7z4#
我们可以用
其中verbose是一个布尔标志,默认情况下为false,可以从下面的API调用中引用。
wxclj1h55#
我想您在@RequestParam中缺少value=“preview”,因此Spring总是将变量preview设置为false,因为这是默认值。
第一个月