作为一个例子,取子域映射.
本文:在Google App Engine上为同一应用程序管理多个域和子域 建议解析Filter上的子域并将变量分配给ServletRequest头.
然后映射将如下所示:
@RequestMapping(value = "/path", headers="subdomain=www")
public String subsiteIndexPage(Model model,HttpServletRequest request) { ... }
Run Code Online (Sandbox Code Playgroud)
如果我们想创建自定义@RequestMapping属性,例如子域,例如.创建这样的映射:
@RequestMapping(value = "/some/action", subdomain = "www")
public String handlerFunction(){ ... }
Run Code Online (Sandbox Code Playgroud)
我们应该使用我们自己的实现覆盖@RequestMapping @interface定义并覆盖RequestMappingHandlerMapping受保护的方法
(如JIRA所述:" 允许自定义请求映射条件SPR-7812 ").
这样对吗?任何人都可以提供一个提示,如何实现这一功能?
想法1:
正如原始jira线程所建议的,是创建自己的实现RequestCondition
有一个项目在github上使用这个解决方案:https://github.com/rstoyanchev/spring-mvc-31-demo/
和相关的问题:在Spring mvc 3.1中添加自定义RequestCondition
也许像@Subdomain("www")Type和Method 这样的映射是可能的解决方案吗?
我有一个Spring mvc(3.1.1)应用程序,我想定义条件超出RequestMapping中可用的条件.我有几件事我想用它.
首先,如果我可以为不同的用户类型显示不同的主页,那将是很好的:
@Controller
public class HomepageController {
@RequestMapping(value = "/")
@CustomCondition(roles = Guest.class)
public String guestHome() { /*...*/ }
@RequestMapping(value = "/")
@CustomCondition(roles = Admin.class)
public String adminHome() { /*...*/ }
}
Run Code Online (Sandbox Code Playgroud)
其次,我希望应用程序既可以作为网站也可以作为REST服务(例如移动应用程序),所以我想让网站访问html和json操作,并让服务(不同的子域)访问json动作(某种@CustomCondition(web = true)只与网站网址匹配)
这可以用于我正在计划的两种用途中的任何一种吗?
我发现很少有关于自定义条件的文档,但我确实找到了一个实现自定义条件的示例,这可能是我想要的,但它使用的是一个@Configuration类,而不是我正在使用的XML配置,我不想移动我的整个spring xml定义到一个@Configuration类.
我可以RequestMappingHandlerMapping在XML中定义customMethodCondition 吗?
我尝试了子类化RequestMappingHandlerMapping和覆盖getCustomMethodCondition,以返回我的自定义RequestCondition,但它没有工作 - getMatchingCondition()在我的条件下没有开火.
任何帮助将不胜感激!
UPDATE
我读了一点,看起来像是RequestMappingHandlerMapping一个新类(从3.1开始).
在我的应用程序中发生的是,尝试覆盖从而重新定义requestMappingHandlerMappingbean 的@Configuration 实际上有效,但是url映射(s中的@RequestMapping方法@Controller)似乎被处理两次,一次由子类处理 …