2014-09-14 12 views
5

Cosa c'è di sbagliato con la mia semplicissima web app: app web distribuita con successo sul server delle app ma ciao bean non si è iniettato nella pagina index.xhtml (la pagina mostra solo Hello da Facelets: # {hello.value})?Come eseguire una pagina JSF 2.2 in ambiente Java EE 7 senza web.xml?

(questo è il primo momento in cui sto lavorando con JSF, così forse questa domanda è molto semplice, e anche che ho usato buon articolo http://arjan-tijms.omnifaces.org/2011/08/minimal-3-tier-java-ee-app-without-any.html)

ho la prossima struttura dell'archivio guerra:

mywebapp 
| 
- WEB_INF 
    | 
    - classes 
    | 
     - Hello.class 
- index.html 

Hello.java ha:

import javax.enterprise.context.RequestScoped; 
import javax.inject.Named; 

@Named 
@RequestScoped 
public class Hello { 

    private String value; 

    public String getValue() { 
     return "Hello JSF"; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 
} 

e anche il mio index.xhtml

<?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://xmlns.jcp.org/jsf/html"> 
    <h:head> 
     <title>My Facelet Page Title</title> 
    </h:head> 
    <h:body> 
     Hello from Facelets: #{hello.value} 
    </h:body> 
</html> 

Per progetto di costruzione ho usato pom.xml:

.... 
<packaging>war</packaging> 
<name>Simple web app</name> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.4</version> 
      <configuration> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-api</artifactId> 
     <version>7.0</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 
+0

Ho aggiunto web.xml a WEB-INF dove ho scritto la configurazione per Faces Servlet come ho trovato in questo file https://github.com/agoncal/agoncal-application-petstore-ee7/blob/master/src/ main/webapp/WEB-INF/web.xml e la mia app Web ora funziona, ma ancora non capisco come eseguirlo senza web.xml? –

+0

Si prega di incollare l'intero contenuto di 'pom.xml'. – Seitaridis

risposta

4

Tratto da JavaServerFaces 2.0, il riferimento completo:

Una voce nel file web.xml dell'applicazione Web consente al controller Faces servlet quando viene specificato un determinato modello URL, ad esempio/volti/. Quando si esegue JSF 2.0 su un contenitore Servlet 3.0, come Sun's Glassfish v3, il web.xml è facoltativo. Se non viene trovato il file web.xml , il servlet Faces Controller viene automaticamente associato al maggior numero di pattern URL :/faces /, .jsf e .faces.

Così si dovrebbe provare con qualcosa di simile:

localhost:8080/mywebapp/faces/index.xhtml.

+0

sì hai ragione, ho perso automaticamente la mappatura di Faces Controller) –

5

Secondo il javadoc, FacesServlet viene registrata automaticamente se una delle seguenti condizioni:

  • Un file faces-config.xml si trova in WEB-INF
  • A Il file si trova nella directory META-INF di un jar nel classpath dell'applicazione.
  • Un nome file che termina con .faces-config.xml si trova nella directory META-INF di un jar nel percorso di classe dell'applicazione.
  • Il param javax.faces.CONFIG_FILES contesto è dichiarata in web.xml o web-fragment.xml.
  • Il Set delle classi passate al metodo onStartup() dell'implementazione ServletContainerInitializer non è vuoto.

Se si utilizza web.xml solo per la registrazione FacesServlet, allora sarebbe facoltativo se una delle condizioni di cui sopra sono soddisfatte.

+0

Grazie Arun Gupta, in realtà stavo leggendo il tuo libro "Java EE 7 Essentials" e provando a verificare l'esempio con JSF 2.2. Per me è stata la prima volta con JSF. –

+1

Fresco, tutti i campioni del libro sono disponibili all'indirizzo: https://github.com/javaee-samples/javaee7-samples –

+0

sì grazie per il collegamento sarà utile per me –

Problemi correlati