我有属性文件 report.properties (\ WEB-INF \ classes \ properties \ report.properties),带有条目:
reportTemplate = reports/report5.jrxml
和 applicationContext-reports.xml (\ WEB-INF \ config \ applicationContext-reports.xml),条目为:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:properties/report.properties"/>
</bean>
的web.xml :
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/applicationContext-reports.xml
</param-value>
</context-param>
在我的控制器中我有:
private @Value("${reportTemplate}") String reportTemplatePath;
但是,当我打印它以检查其值为:
System.out.println("reportTemplatePath="+reportTemplatePath);
而不是输出:reports/report5.jrxml
(取自属性文件),而不是reportTemplatePath=${reportTemplate}
修改:为了清晰起见,在此处复制了OP评论,并显示了System.out.println
的位置。
@Controller
public class myController {
private @Value("${reportTemplate}") String reportTemplatePath;
// other field declarations...
@RequestMapping(value="report.htm", method=RequestMethod.GET) public String showReport() throws JRException{
...
System.out.println("reportTemplatePath="+reportTemplatePath);
...
return "report";
}
}
答案 0 :(得分:7)
我猜applicationContext-reports.xml
属于根应用程序上下文,而控制器是在DispatcherServlet
的上下文中声明的。如果是,请注意PropertyPlaceholderConfigurer
是基于每个上下文配置的,因此您还需要在...-servlet.xml
中声明它。