2012-03-29 16 views
4

私は、アプリケーション内のリソースをバージョニングすることを試みています。JSFリソースのバージョン管理

私が好きなら、このリソース/ JS/1_0_0/mainscript.jsそれは動作しません

。それはRESOURCE_NOT_FOUND

を言いますが、私は好きですときに、この

リソース/ JS/mainscript.js/1_0_0.js

それが動作

。私はそれが第2の方法で組織されている方法が嫌いです。最初は涼しい。何か案が?私はTomcatの7.0を使用しています

、JSF 2.0.9

アップデート:私はprimefacesは、2-2.1.jarチェックしていました。私は、ページのソースを確認したときに、私はこの /javax.faces.resource/jquery/jquery.js.xhtml?ln=primefaces & V = 2.2.1" を見たので>

それから私は/ META-INFを見てリソース/ primefaces/jqueryの/ jquery.js

彼らはそこに任意のバージョン管理を持っていなかったが、私は、このリソース/ JSのように行う場合、どのように/ヘッドで

答えて

9

をV = 2.2.1を追加しました1_0_0/mainscript.js

動作しません。それはRESOURCE_NOT_FOUNDと言います

これは、ライブラリ名としてjsを指定した場合に機能します。

<h:outputScript library="js" name="mainscript.js" /> 

ただし、これはリソースライブラリの適切な使用ではありません。むしろ一つ紹介する。次のように

resources/default/1_0_0/js/mainscript.js 

その後、あなたはそれを指定することができます。

<h:outputScript library="default" name="js/mainscript.js" /> 

を彼らはそこに任意のバージョン管理を持っていなかったが、どのようにそれが頭の中で、V = 2.2.1を追加しました

これはPrimeResourceで実行されますリソース要求にln=primefacesパラメータを指定します。 Constantsは、すべてのPFのバージョンに更新されPrimeFaces固有の定数ファイルをある

@Override 
public String getRequestPath() { 
    return super.getRequestPath() + "&amp;v=" + Constants.VERSION; 
} 

:そのgetRequestPath()は、次の実装があります。

+0

私はそれを得ました、私は以前に私はこのリソース/ js/default/mainscript.jsのようなものを持っていた道を台無しにしました。それから、resources/js/default/1_0_0/mainscript.jsに変更し、こののように変更しました。あなたの答えを見て、私はそれをresources/js/1_0_0/default/mainscript.jsに変更しました。ありがとうございました!!これは、このを使用した場合と同じですか?ライブラリ名が入れ替えられました。 – Ravi

+0

ライブラリは "コンテンツタイプ"ではなく "テーマ"/"モジュール"を表現しなければなりません。 'library =" js "'、 'library =" css "'などを使うことは臭いであり、 'library'属性の意味の誤解を示しています。 – BalusC

+0

ok私は次回そのことを覚えておきます。洞察をいただきありがとうございます。 – Ravi