プロジェクトで SiteMeshFilter の実用的な実装がありましたが、WebApplicationInitializer の代わりに AbstractAnnotationConfigDispatcherServletInitializer の拡張に移行して以来、私のサイトメッシュ フィルターは使用されていません。
Spring セキュリティに関する次のチュートリアルhttp://blog.springsource.org/2013/07/03/spring-security-java-config-preview-web-security/およびhttp://tux2323 を理解しようとしています。 blogspot.co.uk/
セキュリティが邪魔をしているのか、それともイニシャライザ/ディスパッチャの設定が間違っているのかわかりません....
古い構成 (WebApplicationInitializer を拡張):
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("yhj dispatcher", new DispatcherServlet(applicationContext));
dispatcher.addMapping("/");
dispatcher.setLoadOnStartup(1);
servletContext.addFilter("sitemeshFilter", new SitemeshFilter()).addMappingForUrlPatterns(null, false, "/*");
applicationContext.register(MvcConfiguration.class);
}
新しい構成 (AbstractAnnotationConfigDispatcherServletInitializer の拡張):
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] {SecurityConfig.class};
}
@Override
protected Filter[] getServletFilters() {
return new Filter[]{new SitemeshFilter(), new DelegatingFilterProxy("springSecurityFilterChain") };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] {MvcConfiguration.class, PersistanceConfig.class};
}
他の構成クラス/SitemeshFilter は変更されていないので、問題ないことに満足しています。実際、サイトにアクセスすると、データベースからのデータを含む完全なページが表示されますが、Sitemesh によってスタイルが設定されていません。サイトメッシュ フィルターがヒットしていない可能性はありますか?
SitemeshFilter.java:
public class SitemeshFilter extends ConfigurableSiteMeshFilter {
@Override
protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
builder.setMimeTypes("text/html", "application/xhtml+xml");
builder.addDecoratorPath("/*", "/WEB-INF/templates/page.jsp");
}
}