web-dev-qa-db-fra.com

Utilisations de javax.faces.PROJECT_STAGE

Je voulais comprendre l'impact de la propriété 'javax.faces.PROJECT_STAGE' pour une application JSF. Un cas d'utilisation de Nice a été présenté dans les liens ci-dessous.

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

Hormis la présentation de messages d'erreur de validation, existe-t-il un autre cas d'utilisation dans lequel cette propriété est réellement utile? Je comprends que nous pouvons vérifier cette variable pour identifier l’environnement et modifier certaines fonctionnalités. Y at-il autre chose que JSF fait automatiquement pour aider les développeurs? Serait bien si vous pouvez partager les expériences de votre projet?

13
Vicky

Définir ce paramètre sur Development active de meilleurs messages d'erreur, y compris dans le code JavaScript côté client, au détriment de certaines performances. 

Lorsque vous définissez ce paramètre sur Production, certains messages d'erreur sont désactivés et mettez l'accent sur les performances .

La source:
JSF 2.0 Rappel: Étape du projet

17
vrcca

Selon la variable comment de wutzebaer pour cette publication liée , la propriété javax.faces.PROJECT_STAGE peut contrôler l'activation ou non de certaines fonctionnalités (telles que la mise en cache des ressources).

4
timmi4sa

Lorsque nous définissons PROJECT_STAGE en tant que production, nous obtiendrons un meilleur message d'erreur, par exemple, lorsque nous avons omis la balise h: form autour des champs de saisie. valeur autre que Développement), nous n’obtiendrons aucun message d’erreur.

Le composant de formulaire doit avoir un UIForm dans son ascendance. Suggestion: inclure les composants nécessaires dans <h:form>

2
Abuthakir

Cache Busting for Resources pendant le développement

Par ressources, je me réfère à des ressources statiques telles que des feuilles de style, des bibliothèques javascript, des logos et des pictogrammes, etc.

Par défaut, les ressources sont chargées sans aucune expiration du cache (expire au maximum ou autre). En effet, les ressources sont supposées statiques, en ce sens qu'elles ne changent pas pendant la durée de vie du conteneur de servlets. Nous bénéficions ainsi de la mise en cache de ces ressources côté client (mise en cache du navigateur Web).

Cependant, lors de la publication d'une nouvelle version d'une bibliothèque pouvant encapsuler un groupe de ressources, nous ne voulons pas que les utilisateurs restent bloqués avec l'ancienne version d'une ressource. Généralement, et conformément à la spécification, les ressources seront automatiquement suffixées avec le nom de la bibliothèque et la version comme attributs de requête. Une ressource typique sera automatiquement affichée sous la forme suivante:

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

Ceci est géré en utilisant une implémentation spécifique de Resource .

Ainsi, lorsque vous publiez de nouvelles versions d'une bibliothèque, vos utilisateurs ne seront plus bloqués par les anciennes versions des ressources stockées dans leur cache.

Toutefois, pendant les travaux de développement, la version n’augmente pas, mais vous souhaitez tout de même que le cache expire, de préférence immédiatement.

L'implémentation par défaut consiste généralement à s'assurer que, en fonction de la valeur de javax.faces.PROJECT_STAGE, et plus précisément de DEVELOPMENT, expire est défini sur immédiat. Vous pouvez voir cela dans ResourceImpl de Mojarra par exemple:

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

Enregistrement

Comme @vrcca l'a déjà mentionné, une recherche rapide pour les utilisations de isProjectStage révèle que cela active la journalisation supplémentaire uniquement lorsque défini à DEVELOPMENT.


Références

1
YoYo

Une autre fonction de la définition de PROJECT_STAGE en tant que développement est que nous pourrons également voir nos modifications dans les fichiers .xhtml sans redémarrer le serveur.

0
Onefra