这个问题与我在下面定义的Spring MVC方法有关:
writeToRead参数的值应为true或false。我希望enduser调用我的服务追加到url:localhost:8080/index/someendpoint/sometype
以下请求参数:?writeToRead=true
否则如果用户没有将参数附加到url字符串的末尾,则默认为false。问题是,defaultValue=false
注释似乎不接受@RequestParameter
。看起来它只接受字符串类型而不是我正在使用的布尔类型。我可以使defaultValue =“false”,但实际上,这不是布尔值。这是一个字符串。我该怎么做呢?由于方法重载的定义冲突,我无法使用字符串替代(如“Y”或“N”)来解决此问题。我怎么能用布尔语做到这一点?提前谢谢!
@RequestMapping(value="/index/{endpoint}/{type}", method=RequestMethod.POST, consumes=kCompressed, produces=kProducesType)
@ResponseBody
public String indexData(@PathVariable(value="endpoint") String endpoint, @PathVariable(value="type") String type,
@RequestParam(value="writeToRead", defaultValue=false) boolean writeToRead,
@RequestBody byte[] body, HttpServletRequest request) throws Exception {
logger.debug("In indexData for endpoint " + endpoint);
String bodyStr = decompress(body);
return indexController.indexData(endpoint, type, bodyStr, writeToRead, getSecurityContextProvider(request));
}
答案 0 :(得分:17)
将其声明为
@RequestParam(value="writeToRead", defaultValue="false")
是合适的事情。请求参数是字符串,没有别的。你可以解析它们并给它们你想要或需要的语义(例如布尔值),但是,在基础上,它们只是字符串。