在Spring中,@ RequestParameter注释不接受defaultValue参数的布尔值,它只适用于字符串URL请求参数

 龙门居士1966 发布于 2023-02-02 21:22

这个问题与我在下面定义的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));
}   

Sotirios Del.. 18

将其声明为

@RequestParam(value="writeToRead", defaultValue="false")

是适当的事情.请求参数是字符串,没有别的.你可以解析它们并给它们你想要或需要的语义(例如布尔值),但是,在基础上,它们只是字符串.

1 个回答
  • 将其声明为

    @RequestParam(value="writeToRead", defaultValue="false")
    

    是适当的事情.请求参数是字符串,没有别的.你可以解析它们并给它们你想要或需要的语义(例如布尔值),但是,在基础上,它们只是字符串.

    2023-02-02 21:27 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有