![](/img/trans.png)
[英]Send multiple of same object to Controller in Spring MVC
[英]How to send same headers for whole Spring Framework controller?
具體來說,我希望整個控制器發送“ Access-Control-Allow-Origin = *”。
我在下面嘗試過,但這似乎不起作用:
@Controller
@RequestMapping(value = "/controller/base", headers="Access-Control-Allow-Origin=*")
public class UserController {
@RequestMapping(method = RequestMethod.GET, value = "/blah", produces = application/json")
@ResponseBody
public Map blah(/*...,*/ HttpServletResponse response, HttpServletRequest request) throws Exception {
//...
}
}
只有在我明確設置(在所有方法中)這樣時,它才起作用:
response.addHeader("Access-Control-Allow-Origin", "*");
有什么辦法可以在一個地方為一個或多個控制器設置此設置?
據我所知,沒有辦法從控制器本身攔截控制器的所有方法(除了使用@InitBinder
丑陋@InitBinder
)。
但是,您可以創建一個HandlerInterceptor
並將其應用於控制器的基本URL。 例如,使用@EnableMvc
:
@Configuration
@EnableWebMvc
public class MyWebConfiguration extends WebMvcConfigurerAdapter {
...
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(...).addPathPatterns("/controller/base/**");
}
...
}
考慮將Spring 3.2中引入的@ControllerAdvice注釋與@InitBinder結合使用。
“用@ControllerAdvice注釋的類可以包含@ ExceptionHandler,@ InitBinder和@ModelAttribute方法,它們將應用於跨控制器層次結構的@RequestMapping方法,而不是聲明它們的控制器層次結構。@ControllerAdvice是允許實現類的組件注釋可以通過類路徑掃描自動檢測。”
@InitBinder
注釋的方法中設置響應標頭。 @ControllerAdvice
注釋該類,以使它全局處理@InitBinder。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.