繁体   English   中英

@RequestMapping 在超类中实现正文

[英]@RequestMapping with body implementation in superclass

我有一些实体,每个实体都有一个单独的 controller。 在这些控制器中,有一种方法总是相同的,那就是编辑表单路由。 我有一个为任何给定实体构建表单的服务,所以基本上这个方法有三行:构建表单,分配给 model,返回视图名称。 该视图也与该页面上的唯一区别是表单相同。 所以不同的是路径和路径变量的类型(实体类型)。

我想将这个方法移到一个通用的超类中。 我可以用一些通用类型解决路径变量的类型。 问题是路径。 我知道@RequestMapping的值必须是一个常数,那么还有其他方法吗?

我想我可以在技术上创建一个方法来完成我需要的,然后在每个继承的 class 中我可以创建另一个方法来调用这个方法,甚至覆盖原始方法。 我只是好奇是否有更好的方法。

我相信你所描述的:“创建一个方法来完成你在超类中需要的事情”,然后在具体实现中分配 @RequestMapping 以创建路由,这可能是 Spring 中处理此问题的常见最佳实践。

如果您想使用 Spring 路由映射,您可以在启动时使用RequestMappingHandler手动将路由映射分配给 controller 方法来操纵它们,但请注意,class 上的@RequestMapping将为该方法创建一个路由,即使它是一个abstract class(不确定抽象方法,但我假设不是)。 但是,您可以抽象地在接口上使用@RequestMapping 您可以在此处找到如何执行此操作的示例

使用上面的处理程序,您可以创建自己的 inheritance 链类型,使用反射和基 class 上的自定义注释,您手动分配给请求映射处理程序中的路由基。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM