我正在尝试列出当前页面中包含的所有jsf文件(例如,通过ui:include)。我希望我可以在每个UIComponent上以某种方式找到该信息,这样我就不得不遍历该页面上的所有UIComponents并将源文件添加到一个集合中,但我找不到任何可以给我源文件的东西
有什么想法吗?
答案 0 :(得分:0)
Kukeltje建议检查BalusC(还有谁?)帖子Obtaining Facelets templates/files from an external filesystem or database就是答案。
因此,为了列出正在加载的页面的所有包含,请使用以下内容:
我正在使用JSF 2.1,这是我的解决方案:
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import javax.faces.FacesException;
import javax.faces.view.facelets.ResourceResolver;
import org.jboss.seam.log.Log;
import org.jboss.seam.log.Logging;
public class FacesResourceResolver extends ResourceResolver {
private ResourceResolver parent;
public FacesResourceResolver(ResourceResolver parent) {
this.parent = parent;
}
private static final Log log = Logging
.getLog(FacesResourceResolver.class);
@Override
public URL resolveUrl(String path) {
URL url = parent.resolveUrl(path);
log.info("Resource #0", path);
return url;
}
}
并将以下内容添加到web.xml
<context-param>
<param-name>javax.faces.FACELETS_RESOURCE_RESOLVER</param-name>
<param-value>com.locuslive.odyssey.developer.FacesResourceResolver</param-value>
</context-param>