JSF überspringt Phasen - Wie das debuggen?
Frage
Ich bin Debuggen einer ausländischen JSF-Anwendung. Das Problem ist, dass ich ein Formular einreichen, aber die Werte werden nicht übernommen.
Mit einer Phase Zuhörern ich sehen kann, dass der Lebenszyklus läuft nicht vollständig durch, so zu sagen, es überspringt Phase 2 -5: Nach der Ansicht Phase wieder herzustellen, die Reaktionsphase übertragen wird direkt aufgerufen. Ich vermisse die gelten Werte, Validierung, Updatemodell Aktionen und so weiter.
Also, das könnte ein Huhn-und-Ei-Problem: 1. Die verantwortlichen Phasen werden nicht genannt, so dass die neue Form Eingang nicht über getragen werden kann. 2. Das System erkennt keinen neuen Eingang und daher macht direkt nach der Ansicht gestellt wird.
Ich habe, dass es keinen Aufruf von responseComplete () oder Render ().
ich irgendwie stecken. Jede Idee, eine der beiden Hypothesen zu validieren? Oder wie zu debuggen, dass im Allgemeinen? Hat jemand ein ähnliches Problem?
Update
Ich habe den Verdacht, dass JSF ist nicht bekannt, die Postbacks Anfrage und behandeln diese wie eine Startansicht . Das würde erklären, dass ich pass Phase nur 1 & 6.
Wie kann ich überprüfen, ob JSF erkennt dies als nicht-faces-Anfrage ?
Wie kann ich überprüfen, wenn es die entsprechenden treeID in dem aktuellen facesContext
.
Lösung 2
Gefunden die Lösung! Es tut mir leid, aber es war sehr anwendungsspezifische ich denke: Die benutzerdefinierte State für JSF war nicht verwendbar mit JSF 1.2. Dass dieser seltsamen Fehler verursacht hat. Haben Sie die State fixiert und alles hat gut funktioniert. Das ist bitter und viel Zeit kosten: - (
Danke für Ihre Hilfe trotzdem: -)
Andere Tipps
Ich zitiere aus einer Antwort, die ich geschrieben habe, bevor :
Wenn eine Komponente
UICommand
nicht die zugehörige Aktion aufzurufen, Überprüfen Sie Folgendes:
UICommand
Komponenten müssen innerhalb einerUIForm
Komponente platziert werden (Zh:form
).- Sie kann nicht Nest mehr
UIForm
Komponenten ineinander (Vorsicht mit Dateien enthalten!).- Keine Validierung / Konvertierungsfehler aufgetreten sein sollte (Einsatz
h:messages
bekommen sie alle).- Wenn
UICommand
Komponenten innerhalb einerUIData
Komponente angeordnet sind, sicherzustellen, dass genau das gleicheDataModel
(das Objekt hinter demUIData
desvalue
Attribut) ist erhalten.- Die
rendered
unddisabled
Attribute des Bauteils und alle die Mutter Komponenten sollten nicht bewerten zufalse
während gelten Anforderungswerte Phase.- Seien Sie sicher, dass kein
PhaseListener
oder jedeEventListener
in der Anfrage-Antwort-Kette hat sich das JSF Lebenszyklus der invoke überspringen Aktionsphase.- Seien Sie sicher, dass keine
Filter
oderServlet
in der gleichen Anfrage-Antwort Kette hat die Anforderung fo die geblockteFacesServlet
irgendwie.
Da in Ihrem speziellen Fall der Phasen 2-5 wurden ausgelassen, und dass Sie sind sie sicher, (?), Dass FacesContext#renderResponse()
heißt nicht, die bewirkt, dass 3, 6 und 7 können aus der Liste zerkratzt werden. Das bewirkt, dass 4 und 5 kann wahrscheinlich auch zerkratzt werden, abhängig von der Art und Weise, wie Sie die JSF-Phasen korrigiert. Untersuchen Sie die anderen Ursachen. Mein Cent auf Grund 2. Überprüfen Sie, ob Sie in JSF Quelle siehe <form><form></form></form>
in generierten HTML-Quelle und Rückzieher dies nicht.