2017-03-08 5 views
0

私はPrettyFaces 3.3.3とWildfly 10.1.0.Finalで動作するWebアプリケーションを持っています。 URLをより使いやすくするために、PrettyFacesを使用しました。PrettyFacesを使ってかなりのURLを隠す

language = "en" 
zone = "drinks" 

問題:値を持つ

private String language; 
private String zone; 

:豆内部の二つの変数が存在することになる。この場合、

http://www.example.com/en/drinks 

:有効なURLの例は次のようになり私もパスを持つCSSファイルを持っているということです:

http://www.example.com/styles/style.css 

PrettyFacesは、誤って実際のリソースにアクセスするから私を防ぎ、これを解釈:

language = "styles" 
zone = "style.css" 

私はCSSファイルのURLを変換しないPrettyFacesを伝える方法を見つけることを試みたが、私は何かを見つけることができませんでしたそうですね。

pretty URLを維持してCSSファイルにアクセスする方法はありますか?

私の現在のPrettyFacesの設定は次のとおりです。

答えて

2

PrettyFacesは、正規表現に対するすべての着信要求と一致します。

このようなパターン:デフォルトPrettyFacesにより、すべてのパスパラメータの[^/]+を使用しているためだ

/[^/]+/[^/]+ 

<pattern value="/#{bean.language}/#{bean.zone}" /> 

は、このような正規表現に変換されます。

このような一般的なパターンは、CSSや画像ファイルなどの他のリソースとも一致します。

この問題を回避する1つの方法は、PrettyFacesがpathパラメータに使用する正規表現パターンをカスタマイズすることです。これを行うのは簡単で、ここで説明:

http://www.ocpsoft.org/docs/prettyfaces/3.3.3/en-US/html/Configuration.html#config.pathparams.regex

だから、基本的にだけではなく、このパターンを使用します。この場合、あなたのスタイルに

/[a-z]{2}/[^/]+ 

<pattern value="/#{ /[a-z]{2}/ bean.language }/#{bean.zone}" /> 

これはに変換されますシートはもはやパターンと一致しません。

関連する問題