Java EE y JSF

Introducción

Para mostrar el texto formatado utilizamos la web Hilite


Es difícil configurar un entorno de desarrollo si no se entiende como funcionan las cosas. Veamos que hay que hacer para crear un proyecto JSF 2.2 en Eclipse con Maven.

Prerequisitos

Veamos los prerequistos de instalación
  1. Eclipse JEE
  2. Plugins básicos de Eclipse (maven, etc)
  3. Tomcat (9)

Pasos a seguir en Eclipse:


1. Crear un proyecto maven en Eclipse (File-New-Other-Maven-Maven Project)

2. Seleccionar Create a simple project (skip archetype selection) y Next


3. En Group id damos el nombre del paquete por ejemplo org.ximodante.jsf y talto aĺ artifact Id como al Name le proporcionamos el nombre del proyecto, en ese caso JSFv01, y el packaging a war. Podemos  darle el description que queramos. y Finish

(OJO: En Group id no tenemos por que darle el nombre del paquete, se puede dar otros valores como "prueba", "jaja",..)





4. Observamos que se ha creado el proyecto en nuestro Eclipse. Modificamos el pom.xml del proyecto para que quede así

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>org.ximodante.jsf</groupId>
  <artifactId>JSFv01</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>JSFv01</name>
  <description>JSF first project</description>
  
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <failOnMissingWebXml>false</failOnMissingWebXml>
  </properties>
  
  <dependencies>
     
    <!-- Servlet 3.1 -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    
    <!--  JSF 2.2 API -->
    <dependency>
     <groupId>com.sun.faces</groupId>
     <artifactId>jsf-api</artifactId>
     <version>2.2.14</version>
    </dependency>

    <!--  JSF 2.2 Implementation -->
    <dependency>
     <groupId>com.sun.faces</groupId>
     <artifactId>jsf-impl</artifactId>
     <version>2.2.14</version>
    </dependency>

    <!--  Primefaces -->
    <dependency>
     <groupId>org.primefaces</groupId>
     <artifactId>primefaces</artifactId>
     <version>6.1</version>
    </dependency>

    <!--  Primefaces Themes -->
    <dependency>
     <groupId>org.primefaces.extensions</groupId>
     <artifactId>all-themes</artifactId>
     <version>1.0.8</version>
     <type>pom</type>
    </dependency>
  </dependencies>
  
  <!--  Needed repository only for old vesioons of Primefaces 
  <repositories>
    <repository>
      <id>primefaces-repository</id>
      <name>Primefaces repository</name>
      <url>http://repository.primefaces.org</url>
    </repository>
 </repositories>
 --> 
  
</project>

OJO: Para versiones antiguas de PrimeFaces si que era necesario incluir el repositorio indicado. En las nuevas no hace falta. Por ello se ha comentado esta entrada que ya no sirva

5. Veamos los cambios que hemos hecho:
  <maven.compiler.source>1.8</maven.compiler.source>
 <maven.compiler.target>1.8</maven.compiler.target> Para java 1.8

  <failOnMissingWebXml>false</failOnMissingWebXml> Prescindimos del web.xml

  Añadimos las depencencias de servlet 3.1, jsf api e implementación, Primefaces

  Respecto al Servlet 3.1 mediante <scope>provided</scope> le indicamos que utilice esta dependencia para compilar las clases que creamos pero que no lo incluya en el war ya que normalmente los servidores de aplicaciones ya las incluyen.

  OJo: Las actuales versiones de Primefaces ya no requieren la entrada tipo repository para acceder a los jars de Primefaces. Por eso está comentada.

6. Ahora Maven nos buscará las dependencia. Boton derecho sobre el proyecto - Maven -Update Project

Ya hemos hecho lo mas difícil.

Creación de clases y ejecución del proyecto



Creamos nuestro paquete org.ximodante.jsf lo creamos nosotros (nos situamos en el Project explorer de nuestro proyecto en src/main/java y lo creamos.

Nos basamos en lo que se dice en itcuties   y  reamos una clase que se llame KeyboardBean

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
package org.ximodante.jsf 

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;


@ManagedBean
@SessionScoped
public class KeyboardBean {
   private String value;
   public String getValue() {
       System.out.println("KeyboardBean::reading value: " + value);
        
       return value;
   }
   public void setValue(String value) {
       System.out.println("KeyboardBean::setting value: " + value);
        
       this.value = value;
   }    
}

Creamos el fichero index.xhtml en src/main/webapp

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui">  
    <h:head>  
    </h:head>  
      
    <h:body>  
       <h:form>  
           <p:panel header="Keyboard Demo">    
               <p:keyboard value="#{keyboardBean.value}"/>  
             </p:panel>
             <p:commandButton value="Submit"/>
       </h:form>
    </h:body>  
</html>

Ahora creamos en src/main/webapp la carpeta WEB-INF y le creamos el esqueleto del fichero faces-config.xml tal como se dice en coreservlets

1
2
3
4
5
6
7
8
<?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>

Por si acaso ejecutamos Botón derecho sobre el proyecto- Build Project

Ejecutamos Run As - Run on Server, elegimos un tomcat y apuntamos a la dirección

http://localhost:8080/JSFv01/index.jsf

(Ojo cuando le damos a ejecutas se situa en http://localhost:8080/JSFv01 y no http://localhost:8080/JSFv01/index.jsf dando un error. hay que marcar la URL correcta)

Este error no se daría si hubieramos utilizado el fichero web.xml que nos redirige a nuestra página de entrada. Pero queremos prescindir de este fichero. Ver el comentario de Arun Gupta para mas detalles.


Ahora en la consola aparecerán los valores que ingresamos:

KeyboardBean::reading value: null
KeyboardBean::reading value: null
KeyboardBean::setting value: uuu




No hay comentarios :

Publicar un comentario