web-dev-qa-db-ja.com

javax.faces.PROJECT_STAGEの使用

JSFアプリケーションの「javax.faces.PROJECT_STAGE」プロパティの影響を理解したかった。ニースのユースケースが以下のリンクに提示されました

https://dzone.com/articles/jsf-20-new-feature-preview-ser
http://www.Java-tutorial.ch/Java-server-faces/jsf-project-stage

検証エラーメッセージの表示を除いて、このプロパティが本当に役立つ他のユースケースはありますか?この変数をチェックして環境を特定し、特定の機能を変更できることを理解していますが、JSFが開発者を支援するために自動的に行うことはありますか?あなたのプロジェクトからの経験を共有することができれば素晴らしいでしょうか?

16
Vicky

このパラメーターをDevelopmentに設定すると、パフォーマンスが多少犠牲になりますが、クライアント側のJavaScriptを含め、より優れたエラーメッセージが有効になります。

このパラメーターをProductionに設定すると、一部のエラーメッセージが表示されなくなります パフォーマンスを重視

ソース:
JSF 2.0リマインダー:プロジェクトステージ

20
vrcca

Wutzebaerによるcommentによると このリンクされた投稿javax.faces.PROJECT_STAGEプロパティは、特定の機能(リソースキャッシュなど)を有効にするかどうかを制御します。

5
timmi4sa

PROJECT_STAGEをプロダクションとして設定すると、より良いエラーメッセージが表示されます。たとえば、入力フィールドの周りにh:formタグがない場合、ステージが開発として設定されていて、ステージがプロダクションとして設定されている場合(または開発以外の値)エラーメッセージは表示されません。

フォームコンポーネントの祖先には、UIFormが必要です。提案:必要なコンポーネントを<h:form>で囲みます

2
Abuthakir

開発中のリソースのキャッシュ無効化

リソースでは、スタイルシート、JavaScriptライブラリ、ロゴ、ピクトグラムなどの静的リソースを参照します。

デフォルトでは、リソースはキャッシュの有効期限なしでロードされます(最大経過時間などで期限切れ)。リソースは静的であると想定されているため、サーブレットコンテナの存続期間中、リソースは変更されません。クライアント側でこれらのリソースをキャッシュすることにより、Webブラウザーのキャッシュにメリットがあります。

ただし、リソースのグループをラップする可能性があるライブラリの新しいバージョンをリリースする場合、ユーザーが古いバージョンのリソースに行き詰まることは望ましくありません。通常、実装と仕様に従って、リソースにはライブラリ名とバージョンがクエリ属性として自動的に追加されます。典型的なリソースは次のようなものとして自動的に出力されます:

<link type="text/css" rel="stylesheet" href="/nqp-web/javax.faces.resource/components.css.xhtml?ln=primefaces&amp;v=6.2">

これは Resource の特定の実装を使用して処理されます。

したがって、ライブラリの新しいバージョンをリリースしても、ユーザーはキャッシュ内の古いバージョンのリソースに悩まされることはありません。

ただし、開発作業中はバージョンは上がりませんが、キャッシュを(できればすぐに)期限切れにしたいとします。

デフォルトの実装では、通常、javax.faces.PROJECT_STAGEの値、具体的にはDEVELOPMENTに基づいて、有効期限が即時に設定されるようにします。あなたはモジャラの ResourceImpl でそれを見ることができます例えば:

long expiresTime;
if (FacesContext.getCurrentInstance().isProjectStage(Development)) {
  expiresTime = new Date().getTime();
} else {
  expiresTime = new Date().getTime() + maxAge;
}

ロギング

@vrccaですでに述べたように、isProjectStageの使用法の クイック検索 は、これがDEVELOPMENTに設定されている場合、追加のロギングをオンにするだけであることを明らかにします。


参考文献

2
YoYo

PROJECT_STAGEを開発として設定するもう1つの機能は、サーバーを再起動しなくても.xhtmlファイルの変更を確認できることです。

0
Onefra