2010-06-08 20 views
7

Mój serwer to Glassfish v3, moją przeglądarką jest firefox 3.6.3 i używam Netbeans 6.8 Moje pytanie brzmi, dlaczego pole tekstowe nie wyświetla się w mojej przeglądarce. Widzę tylko etykietę.Formularz JSF nie wyświetla się.

<?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> 

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

Jak "Widok źródła" wygląda w przeglądarce po załadowaniu strony? –

+0

Wynikowy html wygląda dokładnie tak samo jak powyższy kod. – AnAmuser

+0

Pokaż nam swój web.xml – Bozho

Odpowiedz

14

Musisz upewnić się, że adres URL żądania (jak wpiszesz w pasku adresu przeglądarki) pasuje do url-pattern z FacesServlet. To znaczy. nie otwieraj strony przez http://example.com/context/page.xhtml, ale otwórz ją przez http://example.com/context/page.jsf. W przeciwnym razie FacesServlet nie zostanie wywołany, a twoja strona XHTML z komponentami JSF nie zostanie w żaden sposób przeanalizowana. Zobaczysz tylko tagi "zwykłego HTML", takie jak <fieldset> itd. W przeglądarce, a kod źródłowy JSF pozostanie niezmieniony w zwróconym źródle HTML po wykonaniu View Source w przeglądarce.

+0

OK. Teraz zmieniłem plik powitalny jako plik jsf i działa. Jak pewnie się domyślacie, jestem totalną nowicjuszką w tej witrynie internetowej. Próbuję zrobić kilka samouczków, ale to frustrujące, gdy nawet te łatwe rzeczy nie będą działać :) – AnAmuser

+2

To kwestia przeczytania odpowiednich tutoriali we właściwy sposób. Proponuję rozpocząć tutaj: http://www.coreservlets.com/JSF-Tutorial/jsf2/ – BalusC

+1

AnAmuser, jeśli uważasz, że ta odpowiedź jest poprawna, ponieważ rozwiązuje problem, kliknij pole wyboru obok odpowiedzi na " Zaakceptuj to –

0

Sprawdź, czy masz skonfigurowane twarze-serwletu na tej stronie

+0

Mapowanie twarzy Serwlet jest automatycznie wykonywany dla ciebie przy korzystaniu z serwera Java EE 6, takiego jak Sun GlassFishTM Enterprise Server v3. – AnAmuser

+1

ok. ale co to jest poprawka po stronie? .xhtml? czy URL to jako somthing.jsf i ustawić w WEB.xml, aby zmapować serwlet na * .jsf? – Dejell

+0

To jest plik xhtml. a plik web.xml jest teraz w pytaniu – AnAmuser

7

Dodaj to do web.xml:

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

Problem masz do czynienia z może być rozwiązany w web.xml plików przechowywanych w WEB-INF dir w projekcie aplikacji internetowych. Musisz otworzyć ten plik i dodać następującą zawartość xml, aby strony działały poprawnie.

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

Jeśli plik .xml robi istnieć we wspomnianym katalogu, możesz dodać ją klikając na projekt aplikacji internetowej, dodać nowy plik, a następnie wybierz Standardowy Deployment Descriptor (web.xml)

Powiązane problemy