Springのweb.xml代替クラスでServletContextの初期化関数が用意されていない
springで、web.xmlの代わりにWebApplicationInitnializerを使用する方法があると思いますが、
共通ヘッダを自動読み込みするための設定である
<jsp-config>
の設定方法がわかりません。
たとえばweb.xmlでは
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>false</el-ignored>
<page-encoding>UTF-8</page-encoding>
<scripting-invalid>false</scripting-invalid>
<include-prelude>/WEB-INF/view/header.jsp</include-prelude>
</jsp-property-group>
</jsp-config>
と設定するところを、
WebApplicationInitializerでは
public void onStartup(ServletContext servletContext) throws ServletException {
JspConfigDescriptor jspConfigDescriptor = new JspConfigDescriptor() {
public Collection<TaglibDescriptor> getTaglibs() {
return null;
}
public Collection<JspPropertyGroupDescriptor> getJspPropertyGroups() {
Collection<JspPropertyGroupDescriptor> propertyGroup = new ArrayList<JspPropertyGroupDescriptor>();
JspPropertyGroupDescriptorImpl pgDescriptor = new JspPropertyGroupDescriptorImpl();
pgDescriptor.setUrlPatterns(Arrays.asList("*.jsp"));
pgDescriptor.setElIgnored(Boolean.FALSE.toString());
pgDescriptor.setPageEncoding("UTF-8");
pgDescriptor.setIncludePreludes(Arrays.asList("/WEB-INF/view/common.jsp"));
propertyGroup.add(pgDescriptor);
return propertyGroup;
}
};
((ServletContextHandler.Context)servletContext).setJspConfigDescriptor(jspConfigDescriptor);
}
という感じになると思います(JspPropertyGroupDescriptorImplは、JspPropertyGroupDescriptorを継承したゲッターセッタークラスを実装しました。)が
((ServletContextHandler.Context)servletContext).setJspConfigDescriptor(jspConfigDescriptor);
は、jettyのservletライブラリでしか実装されていませんでした。
本番ではtomcatで動かしたいのですが、同じServletContextを継承しているだけの別クラスはtomcat8から生成してくれないのか、フレームワークレベルでエラーが発生してしまいます。
何か解決方法はあるのでしょうか?