У меня была та же проблема, и я решил свою проблему с помощью фильтра.Я создал фильтр среды, который я мог бы использовать для установки данных среды для всех запросов.Автоматически связывайте bean-компонент, к которому у вас должен быть доступ, тоже в фильтре.
@Component
public class EnvironmentFilter extends OncePerRequestFilter {
@Autowired
Object bean;
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
request.setAttribute("bean", bean); // add bean or just specific properties of bean.
filterChain.doFilter(request, response);
}
}
Сконфигурируйте фильтр в web.xml, обязательно используйте тот же шаблон для сопоставления фильтра, что и для фильтра Sitemesh.
<filter>
<filter-name>environmentFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>environmentFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Атрибуты, установленные в вашем фильтре, теперь доступны на странице вашего декоратора.