2010-06-08 12 views
7

Mein Server ist Glassfish v3, mein Browser ist Firefox 3.6.3 und ich benutze Netbeans 6.8 Meine Frage ist, warum das Textfeld nicht in meinem Browser angezeigt wird. Ich sehe nur das Etikett.JSF Formular wird nicht angezeigt

<?xml version='1.0' encoding='UTF-8' ?> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
     <html xmlns="http://www.w3.org/1999/xhtml" 
       xmlns:h="http://java.sun.com/jsf/html" 
       xmlns:f="http://java.sun.com/jsf/core"> 
      <h:head> 
       <title>Lookup</title> 
      </h:head> 
      <h:body> 
       <fieldset> 
       <legend>Enter Your Customer ID</legend> 
       <p>Legal ids are id001, id002, and id003.</p> 
       <f:view> 
       <h:form> 
        Customer ID: 
        <h:inputText value="#{bankForm.customerId}" /> 
        <h:commandButton value="Show Current Balance" 
            action="#{bankForm.findBalance}" /> 
       </h:form> 
       </f:view> 
       </fieldset> 
      </h:body> 
    </html> 

Die web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <context-param> 
     <param-name>javax.faces.PROJECT_STAGE</param-name> 
     <param-value>Development</param-value> 
    </context-param> 
    <servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.jsf</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>pages/customer-lookup</welcome-file> 
    </welcome-file-list> 
</web-app> 
+0

Wie funktioniert "View Source" im Browser aussehen, wenn die Seite geladen ist? –

+0

Das resultierende HTML sieht genauso aus wie der obige Code. – AnAmuser

+0

Zeigen Sie uns Ihre web.xml – Bozho

Antwort

14

Sie müssen sicherstellen, dass so konfiguriert, dass die Anforderungs-URL (wie Sie in Browser-Adressleiste eingeben) entspricht der url-pattern der FacesServlet. I.e. Öffnen Sie die Seite nicht unter http://example.com/context/page.xhtml, aber öffnen Sie sie unter http://example.com/context/page.jsf. Andernfalls wird FacesServlet nicht aufgerufen und Ihre XHTML-Seite mit JSF-Komponenten wird in keiner Weise geparst. Im Browser werden nur einfache HTML-Tags wie <fieldset> usw. angezeigt, und Sie sehen den JSF-Quellcode unverändert in der zurückgegebenen HTML-Quelle, wenn Sie im Browser eine View Source aufrufen.

+0

Ok. Jetzt habe ich die Begrüßungsdatei als jsf-Datei geändert, und es funktioniert. Wie Sie wahrscheinlich erraten können, bin ich ein totaler Neuling auf dieser Netzsache. Ich versuche, einige Tutorials zu machen, aber es ist frustrierend, wenn selbst diese einfachen Dinge nicht funktionieren :) – AnAmuser

+2

Es ist eine Frage der richtigen Tutorials den richtigen Weg zu lesen. Ich empfehle Ihnen, hier anzufangen: http://www.coreservlets.com/JSF-Tutorial/jsf2/ – BalusC

+1

AnAmuser, wenn Sie glauben, dass diese Antwort korrekt ist, in dem es Ihr Problem gelöst hat, klicken Sie auf das Kontrollkästchen neben der Antwort zu " akzeptieren –

0

Überprüfen Sie, ob Sie Faces-Servlet auf dieser Seite

+0

Das Faces-Servlet zuordnen wird automatisch ausgeführt, wenn Sie einen Java EE 6-Server wie Sun GlassFishTM Enterprise Server v3 verwenden. – AnAmuser

+1

ok. aber was ist das Postfix der Seite? .xhtml? URL Sie es als somthing.jsf und setzen Sie in WEB.xml, um das Servlet auf * .jsf zuzuordnen? – Dejell

+0

Es ist eine XHTML-Datei. und die web.xml-Datei ist jetzt in der Frage – AnAmuser

7

Fügen Sie diese auf Ihre web.xml:

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.xhtml</url-pattern> 
    </servlet-mapping> 
2

Das Problem, das Sie mit konfrontiert kann in der WEB-INF dir in Ihrem Web-Anwendungsprojekt in web.xml Datei gespeichert gelöst werden. Sie müssen diese Datei öffnen und den folgenden XML-Inhalt hinzufügen, damit Ihre Seiten ordnungsgemäß ausgeführt werden.

<web-app> 
    ... 
    ... 
    ... 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.xhtml</url-pattern> 
    </servlet-mapping> 
    </web-app> 

Wenn Ihre XML-Datei muß nicht im genannten Verzeichnis existiert, können Sie es, indem Sie auf Ihre Web-Anwendung Projekt hinzufügen können, neue Datei hinzufügen, und wählen Sie dann Standard-Deployment Descriptor (web.xml)