2012-04-09 5 views
1

Hier finden Sie meine index.html Datei, die die JSF enthält: http://pastie.org/3755252JSF 2.0 EL-Tags machen nicht in Browser

Wenn ich wählen Run as > Run on Server (Tomcat 7.0.12) in Eclipse Indigo erhalte ich eine Seite, die nur sagt der folgende:

You have login attempts left. 

Das gleiche passiert in Chrome. Obwohl nach dem Betrachten der Quelle der Seite, wurde es angezeigt, so wie ich es in Eclipse (die vorherige Pastie-Datei) geschrieben habe, aber es scheint, als ob es in HTML übersetzt werden sollte.

Das ist mein Member.java Datei: http://pastie.org/3755277 Und hier ist meine web.xml: http://pastie.org/3755284

Es funktioniert früher, bevor ich bemerkte ich, mischte JSF 2.0 mit JSF1 * Syntax.. Dann habe ich meine * .jsp in * .html geändert und es funktioniert nicht.

+0

Aktualisiert web.xml, mit zwei Versionen sein und was jeder tut: http://pastie.org/3759169 – knownasilya

+0

Die Anweisung * "es angezeigt, so wie ich hav e es geschrieben in Eclipse "* Konflikte mit dem Titel. Bitte klären Sie das konkrete Problem. Was siehst du, wenn du mit der rechten Maustaste klickst und * Quelle anzeigen * im Webbrowser siehst? Verstehst du wirklich, was es bedeutet, wenn du "EL" wie im Titel sagst? – BalusC

Antwort

3

Pastie scheint herunterzufallen (Ich kann Ihre Dateien nicht lesen) ... aber Tomcat ist kein vollständiger Java EE-Container. Sie würden die Mojarra-Laufzeit benötigen. Hast du das in deinem Build enthalten?

EDIT: NM es ist zurück. Ich sehe das JSF-Servlet in Ihrer web.xml, daher können Sie diese Antwort ignorieren.

EDIT2: Fügen Sie diese auf Ihre web.xml:

<context-param> 
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name> 
    <param-value>.xhtml</param-value> 
</context-param> 

Dann .xhtml Ihre HTML-Dateien umbenennen. Ich habe das Gefühl, dass das Servlet nicht wusste, dass es Ihre Dateien mit JSF rendern sollte.

EDIT3: Also ich denke, was passiert ist, verwirren Sie den Server auf, ob es die Seite mit Faces rendern sollte oder nicht. Deine URL in deiner URL-Leiste ist "localhost/app/faces/index.html", die genau mit einer Datei übereinstimmt. Sollte es also eine Sendedatei machen oder sollte es durch das Servlet laufen? Der Grund, warum das Umbenennen in .xhtml wahrscheinlich funktionierte, war, dass es intern wusste, dass es eine .html-Anfrage einer .xhtml-Datei zuordnen musste.

vielleicht Also versuchen Sie das Umbenennen von Dateien auf .html5, dann ist diese in Ihrem web.xml festgelegt:

<context-param> 
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name> 
    <param-value>.html5</param-value> 
</context-param> 

denke ich, jede Erweiterung funktioniert ... Sie könnten auch diese Kombination tun:

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.jsf</url-pattern> 
    </servlet-mapping> 
    <context-param> 
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name> 
    <param-value>.html</param-value> 
    </context-param> 

Dann würde Ihre Startseite http://localhost/app/index.jsf

+0

Ich versuche, HTML5 zu verwenden, würde * .xhtml noch für HTML5 gültig sein? Ich habe Servlet Mapping der folgenden '... * .html ..' versucht, aber der Server stürzt ab, wenn ich versuchte, die Seite zu laden. – knownasilya

+0

Beachten Sie, dass meine XML-Datei kein Servlet-Mapping ist, sondern ein Kontextparameter. Als nächstes können Sie es in '.html' ändern und es sollte noch funktionieren. Ändern Sie nicht Ihr Servlet-Mapping, Sie haben es bereits korrekt eingestellt. –

+0

Ah, ich habe versucht, das Servlet und den Context-Parameter gleichzeitig vorher zu mappen, aber ich habe die Idee hinter dem Servlet-Mapping nicht verstanden und konnte keine Informationen über die 'context-param'-Konfiguration finden. Danke, ich werde deinen Vorschlag versuchen. – knownasilya