2010-02-05 10 views
14

sto seguendo il Java EE firstcup esercitazione usando Netbeans e Glassfish.tag JSF non essere resi come HTML

Quando eseguo il livello Web JSF a cui sono stato assegnato il codice, il browser ottiene lo stesso codice JSF codificato nel file .xhtml e i tag non vengono visualizzati come tag HTML. Lo so usando il codice sorgente nel mio browser.

Ad esempio, per questo codice:

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

Il browser dovrebbe ottenere qualcosa di simile:

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

Destra?

Bene, il mio browser sta ricevendo il codice jsf (il primo pezzo di codice sopra) e non il codice html (il secondo pezzo di codice sopra).

Sembra essere un problema di configurazione in netbeans o glassfish ma non so cosa. Qualche idea?


Questo è il mio file 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> 

Questo è il mio file 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> 

Inoltre:

risposta

-1

RISOLTO: Modifica della benvenuto file in web.xml al seguente risolto il problema:

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

Dispari. Hai detto di aver provato 'http: // localhost: 8081/firstcup/greetings.xhtml'. Questo avrebbe dovuto funzionare anche senza un file di benvenuto. Almeno, la causa principale del problema è che la richiesta era ** non ** stata passata attraverso 'FacesServlet'. – BalusC

0

controllare sia il vostro web.xml o le vostre facce -config.xml. Manca ovviamente qualcosa.

edit: Non so JSF 2, ma nella mia jsf 1 faces-config.xml ho questo:

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

Forse si dovrebbe dare un'occhiata a questo. (Potrebbe essere un suggerimento, mi dispiace non posso fare qualsiasi ulteriore)

Edit 2: questa non è la risposta, mi spiace

+0

Cosa devo controllare lì? Sono un principiante di jsf e j2ee e ho tutto quello che il tutorial dice riguardo a web.xml e faces-config.xml.Cioè: imposta la pagina di benvenuto nel web.xml, imposta il pacchetto resourse ai fini della localizzazione in faces-config.xml e imposta alcune proprietà del pageflow in faces-config.xml. – mmutilva

+0

Mostraci quei due file, questo ti aiuterà. –

+0

OK, ho modificato la domanda. – mmutilva

20

Se i tag JSF non sono stati analizzati, allora significa semplicemente che la richiesta non è stata passata attraverso il FacesServlet. Quel servlet è l'unico responsabile di tutto ciò che è JSF. È necessario verificare se l'URL della richiesta utilizzata corrisponde allo url-pattern dello FacesServlet. Nota che è case sensitive.

Ciò può tuttavia verificarsi anche se il file è stato aperto direttamente nel browser integrato dell'IDE nel. Non dovresti farlo.È necessario specificare l'URL corretto nella barra degli indirizzi del browser integrato o di un browser esterno (ad esempio MSIE/Firefox).

Aggiornamento: una cosa in più, hai dichiarato il taglib HTML JSF nell'attributo <html xmlns>? Hai omesso quello nel tuo snippet di codice.

dovrebbe assomigliare

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

Grazie. L'ho controllato e il pattern URL era sbagliato. L'ho modificato in/firstcup/*. Tuttavia, l'url che sto inserendo è http: // localhost: 8081/firstcup/dopo aver riavviato il server e ridistribuito l'applicazione, ma continuo a ricevere il codice jsf non renderizzato. Cos'altro potrebbe essere? – mmutilva

+0

Spiacente, l'url che sto inserendo nel browser è localhost: 8081/firstcup con una barra (/) alla fine (non so perché quell'ultima barra non viene mostrata nel commento) – mmutilva

+1

Quella barra non lo fa t importa Forse il 'FacesServlet' non è stato avviato per qualche motivo. Leggi i log di avvio del server per saperne di più. – BalusC

-2

Ho avuto lo stesso problema. Ho cancellato alcuni vasi di ricchezze da WEB-INF/lib e JSF funziona ora.

8

il seguente codice nel web.xml

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

invece di faces/* ha risolto il mio problema di tag non reso JSF.

Nota: *.html cause StackOverflow

0

Ho anche sofferto di problemi di jsf tags non fusi a tutti. Ho utilizzato il file di benvenuto in web.xml come login/entry.xhtml.

Quando ho cambiato quel file in faces/login/entry.xhtml, funziona bene.

Deve essere dovuto a facesServelet è not intercepting la pagina. Porta al rendering di solo html e jsf tag vengono semplicemente ignorati.

0

Questo potrebbe non essere relativo al sistema, ma dopo ore di ricerca per la soluzione per un problema simile, la mia colpevole risulta essere questo file in 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"/> 

Per qualche strana ragione, JBoss Tools 3.3.0.M2 ha inserito quel file nel mio progetto JSF 2.0 e BOOM! Niente funziona. Il file sembra ancora molto innocente (probabilmente a causa della versione = "1.2") che mi ha reso piuttosto frustrato.

Ho cercato i registri (niente!), WEB-INF/lib, percorsi di classe, anche la rimozione delle dipendenze e si è rivelato essere un singolo :-P faces-config.xml

Speriamo che questo aiuta qualcuno. ..

0

Grazie @ hendy-Irawan

ho risolto il mio problema cambiato la mia intestazione faces-config

da

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

Per

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