【发布时间】:2012-04-18 02:31:45
【问题描述】:
我有一个用 Spring MVC 编写的 Web 服务。第三方开发人员可以使用它。 我们的方法有很多可选参数(在查询字符串中传递)。
我想确保所有查询字符串参数拼写正确并且没有拼写错误。 有没有简单的方法来做到这一点?方法签名示例:
@RequestMapping(value = {"/filter"}, method = RequestMethod.GET)
@ResponseBody
public List<MetricType> getMetricTypes(
@RequestParam(value = "subject", required = false) Long subjectId,
@RequestParam(value = "area", required = false) Long areaId,
@RequestParam(value = "onlyImmediateChildren", required = false) Boolean onlyImmediateChildren,
@RequestParam(value = "componentGroup", required = false) Long componentGroupId
) throws Exception
{
//Some code
}
如果有人使用“onlyImediateChildren=true”参数(拼写错误)而不是“onlyImmediateChildren=true”调用此方法,Spring MVC 将忽略输入错误的参数并假定“onlyImmediateChildren”为空。开发人员将获得稍微不正确的结果列表,并且不会注意到错误。此类问题可能普遍存在且难以诊断。我想检查查询字符串中没有错别字的参数以防止此类问题。
更新
可以从查询字符串中提取实际参数列表。然后可以将其与允许的参数列表进行比较。如果我对允许的参数列表进行硬编码,它将复制方法签名。我想知道从方法签名中提取允许的参数列表是否容易(例如通过 @RequestParam 注释)?
非常感谢
格言
【问题讨论】:
-
您使用的是哪个版本的 Spring?
-
你是说spring MVC吗?我使用名为“Spring-webmvc.3.0.5.Release.jar”的文件。
标签: java spring spring-mvc validation