2016-07-14 4 views
4

Gibt es eine Möglichkeit, welche Linie zu bestimmen (oder sogar welche Datei) dieSuche nach der Ursache von: "Die Formularkomponente muss ein UIForm in seiner Abstammung haben."

Die Formularkomponente verursacht braucht eine UIForm in seinen Vorfahren haben. Vorschlag: umschließen Sie die notwendigen Komponenten innerhalb

Warnmeldung von Primefaces? Ich habe gerade begonnen, an einem etablierten Projekt mit vielen, vielen .xhtml-Dateien (die von anderen geschrieben wurden) mit allen möglichen Vorlagen und Vererbungen zu arbeiten, und ich habe Probleme, einzugrenzen, welche Datei das Problem verursacht.

Ich habe versucht, ohne Glück zu googeln, und ich kann keine Antwort auf SO finden, die Adressen finden die Quelle des Fehlers.

Aktualisieren: Es ist nicht so einfach wie auf die Seite in der URL angezeigt. Die Warnung wird z. B. angezeigt, wenn ich zu '../foo.xhtml' navigiere, jedoch implementiert foo.xhtml eine Vorlage und enthält mehrere andere .xhtml Dateien (die wiederum jeweils einige weitere .xhtml Dateien enthalten). Alle Dateien sind etwas groß (mindestens 500 Zeilen).

+1

Welche Seite sollte klar sein, oder? Da bekommst du das auf einer Seite (oder wird diese Serverprotokollierung?) Versucht den Loglevel zu erhöhen? – Kukeltje

+0

@Kukeltje Nein, eigentlich. Ich werde die Frage aktualisieren. – lucasvw

+0

Außerdem ist es nirgendwo ausgeloggt, es ist nur eine Growl-Nachricht, die angezeigt wird, wenn die Seite geladen wird. – lucasvw

Antwort

4

Bringe einen Debug-Unterbrechungspunkt in FormOmittedChecker#check(), innerhalb des if Block, in dem isInNeedOfForm(component)true zurückgekehrt ist, die line 99 ab Mojarra 2.2.12 ist.

Wie man auf dem Screenshot zu sehen:

96     if (isForm(component)) { 
    97      result = VisitResult.REJECT; 
    98     } else if (isInNeedOfForm(component)) { 
* 99      addFormOmittedMessage(finalContext); 
    100     } 

ohne <h:form>,

<h:inputText id="someInputText" /> 

der Haltepunkt erreicht, wie unten in Eclipse

aussehen wird eine Seite mit einem Eingabefeld Gegeben Sie können die Variable im Variablenstapel überprüfen und dann ihre (oder id) Eigentum. Schließlich können Sie es einfach in der generierten HTML-Ausgabe und/oder im JSF-Quellcode lokalisieren und korrelieren.

Ich stimme jedoch zu, dass die Nachricht eine bessere Diagnose enthalten sollte. Dies wurde in Mojarra 2.3.0-m04 nach issue 4026 festgelegt.

+0

Danke für die Antwort! Ich werde das so schnell wie möglich versuchen. – lucasvw

+0

Arbeitete wie ein Charme! Ich wünschte, ich könnte mehr tun als nur aufschließen und akzeptieren. Ich danke dir sehr! – lucasvw

+0

Gern geschehen. Sie könnten erwägen, ein Kopfgeld zu beginnen und es für die ganze Woche laufen zu lassen. – BalusC

Verwandte Themen