Это возможно.Код в FacesServlet выглядит следующим образом:
ResourceHandler resourceHandler = facesContext.getApplication().getResourceHandler();
// Call ResourceHandler.isResourceRequest(javax.faces.context.FacesContext).
if (resourceHandler.isResourceRequest(facesContext))
{
// If this returns true call ResourceHandler.handleResourceRequest(javax.faces.context.FacesContext).
resourceHandler.handleResourceRequest(facesContext);
}
Реализация по умолчанию использует константу ResourceHandler # RESOURCE_IDENTIFIER по умолчанию, но технически возможно написать ResourceHandlerWrapper, который использует другую структуру.Единственная проблема заключается в том, что оболочка должна реализовывать все, и вы не можете делегировать что-либо алгоритму по умолчанию.Вы можете повторно использовать код на MyFaces Shared , но помните, что это внутренние компоненты, поэтому используйте что-то вроде плагина maven shade или печатную копию для перемещения имени пакета.
Что невозможно, это изменить егодля существующих реализаций ResourceHandler (например, компонентов, которые используют собственную реализацию ResourceHandler, такую как t: captcha или другие варианты), потому что все они связаны с константой.
В любом случае я создал MFCOMMONS-36 чтобы добавить это в расширенную реализацию ResourceHandler, которая добавляется в MyFaces Commons.