如何列出页面的包含源文件?

时间:2017-05-17 13:27:39

标签: jsf

我正在尝试列出当前页面中包含的所有jsf文件(例如,通过ui:include)。我希望我可以在每个UIComponent上以某种方式找到该信息,这样我就不得不遍历该页面上的所有UIComponents并将源文件添加到一个集合中,但我找不到任何可以给我源文件的东西

有什么想法吗?

1 个答案:

答案 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>
相关问题