0

問題があります。PrettyFaces が Web サーブレットの URL パターンをオーバーライドしているようです。

私の pretty-config.xml の一部

<url-mapping id="searchClassifiedAdsBeanRewrite">
     <pattern value="/#{prefixDummy}/#{region:searchBean.region}/#{category:searchBean.category}" />
     <view-id value="/searchClassifiedAds.html" />
</url-mapping>

私のサーブレットurlPatternが続きます

@WebServlet(urlPatterns = {"/images/*", "/images/temp/*"})

これで、きれいな顔の定義に適用される URL があるたびに、webservlet urlpattern が呼び出されることはありません。最初の 1 つまたは 2 番目の URL パターンではありません。

きれいな顔が一致しない場合は、すべてが機能します。(#{prefixDummy} とハードコードを変更しても機能しません。

動的な画像を表示するために、ファイル サーブレット (実際には BalusC の例) を使用しています。

助けていただければ幸いです、ありがとう

4

1 に答える 1

1

PrettyFaces サポート フォーラムは、おそらくこの質問を開始したい場所です: http://ocpsoft.org/support/forum/prettyfaces-users

しかし、あなたがここで尋ねたので:)基本的にあなたが見ているのは予想される動作です。PrettyFaces は、指定されたパターンに一致するすべてのインバウンド サーブレット リクエスト、転送、エラー、またはインクルードに一致します。画像の URL がたまたまそのパターンに一致する場合、それらは他の URL と同様に Pretty URL マッピングによって照合されます。

他の URL と競合しないように、パターンをより厳密に制限する必要があります。

これは、Rewrite コア フレームワーク ( http://ocpsoft.org/rewrite/ ) が含まれている場合、PrettyFaces 4 で簡単に対処できます。既存のサーブレットによってマップされた URL を除外しながら、URL を一致させることができます。)

これは書き換えですでに可能です:

ConfigurationProvider.begin()
.addRule(Join.path("/{prefixDummy}/{region}/{category}").to()
         .when(Not.any(ServletMapping.includes("/{prefixDummy}/{region}/{category}")))
         .where("region").bindsTo(PhaseBinding.to(El.parameter("searchBean.region")))
         .where("category").bindsTo(PhaseBinding.to(El.parameter("searchBean.category"))))

負の制約に注意してくださいServletMapping.includes("/{prefixDummy}/{region}/{category}")。コンテナ内のサーブレットが別の方法でリクエストを処理できる場合に、ルールが一致しないようにします。

于 2012-05-09T12:25:10.923 に答える