【问题标题】:Spring MVC: Ensure parameter is valid, cross cutting through many controllersSpring MVC:确保参数有效,通过许多控制器横切
【发布时间】:2014-06-10 15:01:02
【问题描述】:

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

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

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

  1. 我编写了某种实用程序 pojo,并在处理 /fruit/{type} 的每个控制器方法中调用它的方法。看起来很笨拙。
  2. 一个 Spring Web 请求拦截器
  3. 弹簧安全?
  4. AOP?
  5. 还有别的吗?

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

【问题讨论】:

标签: java spring spring-mvc spring-security spring-aop


【解决方案1】:

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

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

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

您可以按控制器注册您的 PropertyEditor,也可以通过映射到 RequestMappingHandlerAdapter 的自定义 PropertyEditorRegistrar 全局注册。

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

顺便说一句,我会考虑使用 404 与 400,但这只是我个人的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多