2017-05-17 2 views
0

現在のページに(ui:includeなどを介して)含まれているすべてのjsfファイルを一覧表示しようとしています。私はその情報をUIComponentごとに見つけて、そのページのすべてのUIComponentsを繰り返してソースファイルをセットに追加しなければならないことを願っていましたが、ソースファイルを与えるものは何も見つかりませんでした。ページに含まれているソースファイルを表示するにはどうしたらいいですか?

アイデア?

+0

次は不可能(私は思う)。あなたは、例えば、 'ui:include'にはいくつかのダイナミクスがあります。テンプレートが使われていて、そこで使われているものを見たら...私には難しいと思う。しかし私は質問として私にしてください:なぜあなたはしたいですか?非常に珍しいことです(15年ぶりに) – Kukeltje

+0

RichFacesからPrimeFacesに大きなJSFアプリケーションを移行しています。何年もの間、たくさんのxhtmlファイルとデッドコードが蓄積されています。だから、特定の「メイン」ページのためにどのファイルを変換する必要があるのか​​を知ることは良いことです。 – Ben

+0

私は今朝考えました。おそらく、基本/デフォルトを拡張するカスタムResourceResolverを作成し、それが解決しようと試みる(そして元のリゾルバにリクエストを渡す)「URL」と任意のxhtmlファイルを記録するかもしれません。 http://stackoverflow.com/questions/13292272/object-facelets-templates-files-from-an-external-filesystem-or-database – Kukeltje

答えて

0

BalusCさん(他に誰ですか?)投稿を確認するためのKukeltjeの提案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> 
関連する問題