spring - Spring MVC 中的 @RequestParam with required=false 使用参数作为必需参数
问题描述
我正在尝试包含一个可为空的 RequestParam 但 Spring 似乎将其视为强制性的
控制器:
open fun calculate(@RequestHeader(name = USER_ID_HEADER, required = true) userId: String,
@RequestParam(name = "product_price_amount", required = true) productPriceAmount: BigDecimal,
@RequestParam(name = "product_price_currency", required = true) productPriceCurrency: String,
@RequestParam(name = "item_id", required = true) itemId: String,
@RequestParam(name = "promocode", required = true) promocode: String,
@RequestParam(value = "carrier_delivery_mode",
required = false, defaultValue = "BUYER_ADDRESS") carrierDeliveryMode: String? = "BUYER_ADDRESS"
获取请求
calculator/costs?product_price_amount=100&product_price_currency=EUR&item_id=g9kp615z5l32&promocode=1LL
我收到以下错误:
[ { "error_code": "Bad Request", "message": "参数条件 \"product_price_amount, product_price_currency, item_id, promocode, carrier_delivery_mode\" 不符合实际请求参数:product_price_amount={100}, product_price_currency={EUR}, item_id={g9kp615z5l32},促销代码={1LL}" } ]
任何想法为什么这会失败?
解决方案
您已经在注释中有一个默认值。请删除这个?= "BUYER_ADDRESS" 部分并保留它 carrierDeliveryMode: String. 希望有帮助:)
推荐阅读
- dax - DAX 中的列中仅不同值的总和
- c# - TaskCanceledException 性能低下
- grep - Grep 对 S3 文件夹中的文件进行排序
- python - 致命的 Python 错误:initfsencoding:无法获取语言环境编码文件“/cm/shared/apps/anaconda2/4.5.12/lib/python2.7/encodings/__init__.py”
- wpf - 如何创建一个继承自 Thumb 的自定义控件“MyThumb”,同时用户不能设置 MyThumb 的宽度和高度?
- java - Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作
- csv - 如何在 Jasper 报告(CSV 导出与 HTML 布局)中省略分组功能(但将分组值作为列包含)?
- python - Python 文件树 + 大小和计数文件和目录的数量
- java - 如何向 JFrame 添加自定义组件?
- c++ - 如何从 cv::Mat 表示 QwT 中的颜色图数据?