同じ問題が発生し、フィルターを使用して問題を解決しました。すべてのリクエストの環境データを設定するために使用できる環境フィルターを作成しました。フィルタでもアクセスする必要がある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>
フィルタから設定された属性がデコレータページから利用できるようになりました。