2010-02-05 14 views
14

Obserwuję ten Java EE firstcup tutorialu wykorzystaniem Netbeans i GlassFish.JSF tagi nie są renderowane jako HTML

Po uruchomieniu warstwy sieciowej JSF, której instrukcje dotyczą kodowania, przeglądarka pobiera ten sam znacznik JSF zakodowany w pliku .xhtml, a znaczniki nie są renderowane jako znaczniki HTML. Wiem o tym, korzystając z kodu źródłowego widoku w mojej przeglądarce.

Na przykład, dla tego kodu:

<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:h="http://java.sun.com/jsf/html"> 
    <h:head> 
     <title>Page title here</title> 
    </h:head> 
    <h:body> 
     <h2> 
      <h:outputText value="#{bundle.WelcomeMessage}" /> 
     </h2> 
    </h:body> 
</html> 

Przeglądarka powinna dostać coś takiego:

<html ...> 
    <head> 
     <title>Page title here</title> 
    </head> 
    <body> 
     <h2> 
      the welcome message goes here 
     </h2> 
    </body> 
</html> 

prawda?

Cóż, moja przeglądarka pobiera kod jsf (pierwszy fragment kodu powyżej), a nie kod HTML (drugi fragment kodu powyżej).

Wygląda na to, że jest to problem z konfiguracją w netbeans lub glassfish, ale nie wiem co. Jakieś pomysły?


To jest mój plik 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>/firstcup/*</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>greetings.xhtml</welcome-file> 
    </welcome-file-list> 
</web-app> 

To jest mój plik faces-config.xml:

<?xml version='1.0' encoding='UTF-8'?> 

<!-- =========== FULL CONFIGURATION FILE ================================== --> 

<faces-config version="2.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-facesconfig_2_0.xsd"> 

    <application> 
     <resource-bundle> 
      <base-name>firstcup.web.WebMessages</base-name> 
      <var>bundle</var> 
     </resource-bundle> 
     <locale-config> 
      <default-locale>en</default-locale> 
      <supported-locale>es</supported-locale> 
     </locale-config> 
    </application> 
    <navigation-rule> 
     <from-view-id>/greetings.xhtml</from-view-id> 
     <navigation-case> 
      <from-outcome>success</from-outcome> 
      <to-view-id>/response.xhtml</to-view-id> 
     </navigation-case> 
    </navigation-rule> 
</faces-config> 

Ponadto:

Odpowiedz

-1

rozwiązany: Zmiana welcome-file w web.xml z następującym rozwiązał problem:

<welcome-file-list> 
    <welcome-file>firstcup/greetings.xhtml</welcome-file> 
</welcome-file-list> 
+5

Nieparzysty. Powiedziałeś, że wypróbowałeś również 'http: // localhost: 8081/firstcup/greetings.xhtml'. To powinno działać równie dobrze bez pliku powitalnego. Przynajmniej podstawową przyczyną problemu jest to, że żądanie ** nie ** przeszło przez 'FacesServlet'. – BalusC

0

kontrolę zarówno swoją web.xml lub twarze -config.xml. Coś wyraźnie brakuje.

edit: nie wiem JSF 2, ale w moim JSF 1-config.xml twarze mam to:

<application> 
    <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> 
</application> 

Może powinieneś wziąć to wyglądać. (Może być podpowiedź, przepraszam, nie mogę pomóc dalej)

edit 2: to nie jest odpowiedź na pytanie, przepraszam

+0

Co mam tam sprawdzić? Jestem nowicjuszem jsf i j2ee i mam wszystko, co tutorial mówi o web.xml i face-config.xml.To znaczy: ustaw stronę powitalną w pliku web.xml, ustaw pakiet zasobów do celów lokalizacyjnych w pliku faces-config.xml i ustaw niektóre właściwości przepływu strony w pliku faces-config.xml. – mmutilva

+0

Pokaż nam te dwa pliki, które pomogą. –

+0

OK, zredagowałem pytanie. – mmutilva

20

Jeśli znaczniki JSF nie został przetworzony, to po prostu oznacza, że ​​wniosek nie został przekazany przez FacesServlet. Ten serwlet jest odpowiedzialny za wszystkie te rzeczy JSF. Musisz sprawdzić, czy adres URL żądania pasuje do url-pattern z FacesServlet. Zwróć uwagę, że wielkość liter ma znaczenie.

Może się to jednak zdarzyć, jeśli otworzyłeś plik bezpośrednio we wbudowanej przeglądarce IDE. Nie powinieneś tego robić.Musisz sam określić właściwy adres URL na pasku adresu wbudowanej przeglądarki lub zewnętrznej przeglądarki (np. MSIE/Firefox).

Aktualizacja: jeszcze jedno, czy zadeklarowałeś taglib HTML JSF w atrybucie <html xmlns>? Pominliłeś to w swoim fragmencie kodu.

To powinno wyglądać

<html 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html"> 
+0

Dzięki. Sprawdziłem to i wzorzec adresu URL był nieprawidłowy. Zmieniłem go na/firstcup/*. Jednak adres URL, który wpisuję, to http: // localhost: 8081/firstcup/po zrestartowaniu serwera i ponownym wdrożeniu aplikacji, ale wciąż otrzymuję niewyrenderowany kod jsf. Cóż innego mogło być? – mmutilva

+0

Przepraszamy, adres URL, który wpisuję w przeglądarce, to localhost: 8081/firstcup z ukośnikiem (/) na końcu (nie wiem, dlaczego ostatni slash nie jest wyświetlany w komentarzu) – mmutilva

+1

Ten slash doesn ' Nieważne. Może z jakiegoś powodu nie udało się uruchomić 'FacesServlet'. Przeczytaj dzienniki uruchamiania serwera, aby dowiedzieć się więcej. – BalusC

-2

miałem ten sam problem. Usunąłem kilka słoików richfaces z WEB-INF/lib i JSF działa teraz.

8

Poniższy kod w web.xml

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

zamiast faces/* rozwiązał mój problem z non-renderowane znaczników JSF.

Uwaga: *.html przyczyny stackoverflow

0

Mam również cierpiał problemu jsf tags niewytapiany w ogóle. Użyłem pliku powitalnego w web.xml jako login/entry.xhtml.

Po zmianie tego pliku na faces/login/entry.xhtml, działa on prawidłowo.

To musi być spowodowane facesServelet jest not intercepting strony. Prowadzi to do renderowania tylko zwykłychi jsf znaczników są po prostu ignorowane.

0

To może nie być odpowiednie dla Ciebie, ale po wielu godzinach poszukiwania rozwiązania dla podobnego problemu, mój winowajcą okazuje się ten plik w katalogu WEB-INF/faces-config.xml:

<?xml version="1.0"?> 
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xi="http://www.w3.org/2001/XInclude" 
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-facesconfig_1_2.xsd"/> 

Z jakiegoś dziwnego powodu JBoss Tools 3.3.0.M2 umieścił ten plik w moim projekcie JSF 2.0 i BOOM! Nic nie działa. Plik wygląda na bardzo niewinny (prawdopodobnie z powodu wersji = "1.2"), co bardzo mnie sfrustrowało.

Rozglądałem cylindryczne (nic!), WEB-INF/lib, ścieżek dla klas, a nawet usuwanie zależności i okazało się to być pojedynczy :-P twarze-config.xml

Mam nadzieję, że ktoś pomaga. ..

0

Dzięki @ Hendy-Irawan

mi rozwiązać mój problem, zmieniłem nagłówek twarze-config

Od

<?xml version="1.0" encoding="UTF-8"?> 

<faces-config 
    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-facesconfig_1_2.xsd" 
    version="1.2"> 

</faces-config> 

Aby

<?xml version="1.0" encoding="UTF-8"?> 

<faces-config 
    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd" 
    version="2.2"> 

</faces-config> 
Powiązane problemy