このフィールドに関する私の研究は、 web.xmlの独自の EE フィルターにctxパラメーターを配置できることを示しました。
<filter>
<filter-name>ctxFilter</filter-name>
<filter-class>org.my.web.filter.CtxFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ctxFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
と:
public class CtxFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) { }
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setAttribute("CTX", request.getServletContext().getContextPath());
chain.doFilter(request, response);
}
@Override
public void destroy() { }
}
またはSpringインターセプター(私のプロジェクトフレームワークスタックに基づく)。また、これは次の方法でも実行できます。
<spring:url value="/" var="ctx" htmlEncoding="true"/>
<a href="${ctx}/path/...">...</a>
またはとして:
<c:url value="/" var="ctx"/>
<a href="${ctx}/path/...">...</a>
ただし、これらの例の最初の行は、JSP ファイル間で複製する必要があります。
最後に、適切な関数WEB-INF/tlds/ctx.tldを使用して TDL ファイルを実装できます。
<function>
<name>ctx</name>
<function-class>org.my.web.Ctx</function-class>
<function-signature>java.lang.String getCtx()</function-signature>
</function>
参照: