Spring存在问题,并将请求标头名称值注入控制器。
下面是代码:Spring - 请求标头名称的注入值
@Controller
public class ApiController {
@Value("${param.header_name}")
private String param;
@RequestMapping(value = "/**")
public void handleApiRequest(final HttpServletRequest request, final HttpServletResponse response,
@RequestHeader(value = param) final String param)
属性使用@PropertySource
和PropertySourcesPlaceholderConfigurer
定义。
的问题是:
“用于注释属性的值RequestHeader.value必须是 常量表达式”。
但是不可能将值注入常量(最终静态)字段。有没有解决方法?我想使用RequestHeader
注释/映射和属性文件来定义标题名称。在注释中使用
不,你无法为Spring bean的成员变量分配一个动态值 - 为什么你会希望发生这种情况? 如果你在'handleApiRequest()'方法中需要这个头部变量,你可以使用'request.getHeader(header_name)'从request中检索它。你为什么要在你的'@ Value'属性中使用它? – Alexander
嗨@Fazovsky,看看这个线程:http://stackoverflow.com/questions/6897201/an-alternative-to-value-annotation-in-static-function – SyntaX
@亚历山大我认为RequestHeader注释更干净,然后请求.getHeader(...) – FazoM