2009-12-31 19 views
4

Je suis nouveau à JSF et j'ai un problème avec mon application JSF simple. J'utilise Facelets et Richfaces sur WebLogic 10.3.2 (11g). L'application est essentiellement 3 pages:Problème JSF avec la mise en cache FireFox 3.5, wyciwyg: // préfixe

A < -> B < -> C

où les flèches intermédiaires représentent les règles de navigation. La navigation est effectuée à travers a4j: commandButtons Le problème est dans Firefox 3.5, quand je clique de B à C, je reçois une URL à partir de wyciwig: //. De façon plus détaillée, l'url de départ est:

http://localhost:7001/myapp/index.faces

et l'URL que je reçois quand je navigue de B à C est la suivante:

WYCIWYG: // 20/http://localhost:7001/myapp/index.faces

D'un Recherche Google J'ai vu que wyciwig est WhatYouCacheIsWhatYouGet, donc le problème est probablement lié à la mise en cache. Dans ce sens, je l'ai fait deux choses:

A. J'ai ajouté les balises meta suivantes:

<meta http-equiv="Pragma" content="No-cache"/> 
<meta http-equiv="Cache-Control" content="no-store,No-cache,must-revalidate,post-check=0,pre-check=0,max-age=0"/> 
<meta http-equiv="Expires" content="-1"/> 

B. J'ai ajouté un PhaseListener pour ajouter des balises d'en-tête HTML, comme l'a suggéré here.

Malheureusement, le problème persiste.

Une autre chose qui pourrait être liée est que pour une raison quelconque, ma navigation ne change pas l'URL qui apparaît dans la barre d'adresse du navigateur. Les liens qui apparaissent dans la barre d'état quand je passe la souris de la souris sur l'a4j: commandButtons est toujours

http://localhost:7001/myapp/index.faces#

Ainsi, les questions sont les suivantes:

  1. Pourquoi est-ce WYCIWYG: // 20/ préfixe apparaissent, et comment puis-je surmonter cela?
  2. Que puis-je faire pour changer l'URL lorsque je navigue d'une page à l'autre? Est-ce que cela fera fonctionner le "bouton Back"?

Cheers!

MISE À JOUR 1: Ces gars-là here (texte en portugais) dire que le remplacement de tous a4j: commandLink avec a4j: htmlCommandLink résout le problème. Je l'ai fait, et ils ont raison. Je ne comprends pas la raison, à travers.

Répondre

5

En fait, la réponse est assez simple et expliquée dans la FAQ RichFaces que je vous suggère de lire à fond!

Les composants ajax ne sont pas conçus pour la navigation dans les pages et ne fonctionneront pas s'ils sont utilisés de cette façon.

Voir http://community.jboss.org/wiki/CommonAjaxRequestsProblems#navigation

La a4j raison: htmlCommandLink fonctionne est qu'il est pas vraiment un élément ajax mais une balise de lien ancien HTML brut.

Un espoir qui aide à expliquer les choses.

2

Ceci est plus un problème de Firefox qu'un problème JSF. En fait, vous ne devriez jamais voir ces liens dans la barre d'adresse. Probablement votre environnement Firefox ou l'un de ses plugins est foiré. Essayez this troubleshooting guide. Si en vain, désinstallez tout et réinstallez Firefox propre. Vous pouvez également tester sur une autre machine phyisically avec Firefox pour voir si elle est réellement causée par Firefox ou votre webapp.

+0

Merci pour la réponse! Je l'ai vérifié aussi à partir d'autres installations de Firefox sur d'autres ordinateurs, et j'ai le même problème. Que ce soit ou non un problème de Firefox, je dois trouver la solution sans compter sur la réinstallation ou la désinstallation des plugins par les utilisateurs. –

2

Ceci est une réponse partielle, ce qui signifie qu'il montre comment contourner le problème, mais n'explique pas pourquoi il s'est produit en premier lieu.

Afin de préciser quels éléments l'origine de ce problème, je l'ai remplacé chaque bouton avec 5 composants:

  • a4j: commandButton
  • a4j: commandLink
  • h: commandButton
  • h: commandLink
  • a4j: htmlCommandLink

Chaque composant a la même action. Ceux qui ne fonctionnent pas sont les deux premiers (a4j: commandButton, a4j: commandLink). Les autres ne présentent aucun problème. Donc, pour l'éviter, utilisez h: commandButton, h: commandLink, a4j: htmlCommandLink. A propos de l'URL ne s'affiche pas correctement, il semble être un problème connu de JSF 1.2 (éventuellement résolu en 2.0), comme expliqué here et here. Ce problème est résolu en utilisant des frameworks/bibliothèques tels que Seam, PrettyFaces ou autres.

+0

Si une meilleure réponse se présente, je vais décocher celui-ci pour l'autre. –

+0

Une meilleure réponse est venue. En sélectionnant celui-là à la place. –

0

Vous pouvez essayer cette façon:

  1. Ouvrez Mozilla
  2. Tapez AddressBar: about:config
  3. Set browser.cache.memory.enable = FALSE
  4. Redémarrer navigateur
  5. Chargez votre page et essayer!

Bonne chance! :)

0

Avait le même problème, l'URL n'a pas mis à jour sur la navigation.

Ajout d'un tag de redirection dans chacune des règles de navigation à l'intérieur de faces-config.xml résolu mon problème.

Solution trouvée dans l'adresse suivante:

http://www.java-samples.com/showtutorial.php?tutorialid=603