Это возможно с помощью ресурса распознаватель пользовательских Facelets. Я бы не разрешил их только HTTP, а просто из класса. Просто упакуйте общие шаблоны, например, в папку /META-INF/resources
файла JAR и отпустите класс resolver в том же JAR. Наконец, распространите этот JAR среди всех webapps.
package com.example;
import java.net.URL;
import com.sun.facelets.impl.DefaultResourceResolver;
public class FaceletsResourceResolver extends DefaultResourceResolver {
private String basePath;
public FaceletsResourceResolver() {
this.basePath = "/META-INF/resources"; // TODO: Make configureable?
}
public URL resolveUrl(String path) {
URL url = super.resolveUrl(path); // Resolves from WAR.
if (url == null) {
url = getClass().getResource(basePath + path); // Resolves from JAR.
}
return url;
}
}
Зарегистрируйте в web.xml
следующим образом:
<context-param>
<param-name>facelets.RESOURCE_RESOLVER</param-name>
<param-value>com.example.FaceletsResourceResolver</param-value>
</context-param>
Обратите внимание, что это должно быть сделано по-разному в JSF 2.x Facelets см this answer для деталей.
спасибо @BalusC. Я использую JBoss Seam 2.x с JEE 5, и я не могу найти класс ResourceResolver. –
Ах, ты все еще на JSF 1.x, я обновил ответ. – BalusC
Спасибо @BalusC. –