【发布时间】:2015-08-04 07:06:33
【问题描述】:
@RequestMapping("/query")
@ResponseBody
public ResponseEntity<Content> getByQuery(HttpServletRequest request, ContentQuery query) {
// Handle request.
}
此代码将用作 ContentQuery 对象的 http 包装器,以便我可以使用来自 javascript 的 http-requests 查询内容。 Spring 中的自动绑定将请求参数绑定到 ContentQuery 对象。
问题是,如果有人在请求中放入了未知的参数键,则 ContentQuery 对象仍然被实例化,我不知道如何检查我是否得到了意外的参数。
有什么办法可以解决吗?
【问题讨论】:
-
在这两种情况下,您在内容查询中究竟得到了什么
-
ContentQuery 对象使用所有字段作为默认值进行实例化。对象 == null,ints = 0,依此类推。如果我将此 ContentQuery 对象传递给我的服务,我将获得系统中所有内容对象的列表。
-
如果有不适合 ContentQuery 对象的参数,或者客户端根本不提供任何参数,我想用 400-Bad Request 回答。
-
您可以将验证放在模型或 bean "ContentQuery" 中。如果数据不符合验证。它会自动抛出 400 Bad Request
-
我希望避免编辑 ContentQuery bean,但这可能是唯一的方法。这是一个相当大的CMS,我正在为它开发一个插件。所以我希望我不必接触核心模块(ContentQuery 是其中的一部分)
标签: javascript java spring