Holamundo con jsf

0

Por admin | Para la categoría de jsf (java server faces) | noticia del 28-01-2010

En el anterior post, habíamos visto la creación de un proyecto web dinámico, y la carga de las librerías necesarias para el proyecto

En jsf tenemos un fichero xml de configuración al igual que en struts, éste fichero es el faces-config.xml. y contamos con el fichero de despliegue web.xml.

Una página jsf, no es más que una página jsp con las taglib de jsf. de las librerías jsf cargadas,

Importante si no hemos cargado las librerías jstl en el directorio lib del proyecto eclipse nos da la siguiente excepción

1
2
3
4
5
6
7
excepción
 
javax.servlet.ServletException: La ejecución del Servlet lanzó una excepción
 
causa raíz
 
java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

Creamos una página jsp nueva con el nombre de index

1
2
3
4
5
6
7
8
9
10
11
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
  holamundo
</body>
</html>

Ejecutamos el proyecto web y nos muesta el conocido holamundo, bien esto que parece exactamente igual que toda la vida en java para web, veremos las peculiariadades paso a paso.

url del proyecto http://localhost:8080/primerojsf/faces/index.jsp resultado holamundo
en la barra del navegador ponemos http://localhost:8080/primerojsf/index.jsf resultado holamundo
en la barra del navegador ponemos http://localhost:8080/primerojsf/index.faces resultado holamundo

Esto es debido a que en el fichero web.xml está mapeado así en el proyecto

1
2
3
4
5
6
7
8
9
10
11
12
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
  </servlet-mapping>

Fragmento del web.xml donde se declara el nombre y la clase del servlet para jsf

1
2
3
4
5
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

Introducimos la librerías jsf en la página jsp

1
2
3
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

Mediante el atributo uri accedemos al recurso y mediante el atributo prefix, establecemos un identificador para poder hacer uso del recurso. En todos los libros de jsf suelen venir así, h y f, aunque para core se utilice f está bien, para luego no equivocarse y utilizar la librerías jstl, que tienen para su core y core_rt también el prefijo “c”.

El prefix se puede poner cualquiera pero se suelen utilizar estos por convención, así es más comodo leer código de otros desarrolladores

La etiqueta f:view establece un contenedor para de alto nivel para poder usar los componentes de la vista en jsf, sería como un jframe de java swing.

Mediante

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 <f:view>
    <h:outputText value="holamundo"/> 
 </f:view>
</body>
</html>

Escribe un comentario