我有一个使用spring mvc的宁静服务器。许多控制器(尽管不是全部)都采用某个路径参数/ fruits / {type}。

我需要集中配置可接受的水果类型。即苹果,香蕉,樱桃都可以。对于其他所有内容,我都需要抛出400级的http状态代码。

快速而优雅地完成此操作很重要。可以这样做的一些方法是:


我编写了某种实用程序pojo,并在处理/ fruit / {type}的每个控制器方法中调用了它的方法。似乎很笨拙。
Spring Web请求拦截器
春季安全?
AOP?
还有吗


实现这一目标的最专业,最快捷,最优雅的方法是什么?

最佳答案

您可能不会得到“最佳方法”的答案。每种“最佳方式”都取决于您的具体情况,需求和愿望。这是“一种”方式...

我们在请求绑定期间通过PropertyEditors进行此操作。

每种控制器类型可以有一个PropertyEditor,并且如果没有收到期望的正确类型的“事物”,则从PropertyEditor引发异常。

您可以按控制器或通过映射到RequestMappingHandlerAdapter的自定义PropertyEditorRegistrar在全局范围内注册PropertyEditor。

然后,我将使用Spring SimpleMappingExceptionResolver将不同的异常映射到要返回的视图和错误代码。

顺便说一句,我会考虑使用404 vs 400,但这就是我。

09-25 22:15