Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tutorialjsf PDF
Tutorialjsf PDF
Tutorialjsf PDF
Crditos
YannArthurNicolas
yannart@gmail.com
www.merlinsource.com
Objetivo
CrearunaprimeraaplicacionconJSFutilizandolostagsparaJSPyunManagedBean,entenderla
configuracionbsicadeelarchivofacesconfig.xml.
Prerequisitos
Javabasico,HTMLbsico,unIDEquesoporteJSFyuncontenedorJSP/Servlets.
LospasossonindicadosparaNetBeans5ysuperiorconTomcat5.
Nota:ComosehizoeltutorialenentornoLinux,lasdiagonalesson"/"paraWindowsnormalmentela
barraestainvertida"\"peroelentornoNetBeanspermitequebajoWindowsseutiliceelformato
Unix.
Quvamosahacer?
Habrunapaginaprincipal(index.jsp)quetendrunenlaceaotra(entrada.jsp)conunformulario
paraponernuestronombre.
Alpulsarelbotndelformulario,sevalidarasielcamponoestavacoysielnumerodecaracteres
estaenciertorango(de2a15).Silaentradaescorrecta,semuestraunmensajedebienvenidaconel
nombreingresado,sihayunerror,serecargalapaginaconelformularioysemuestraunmensaje
especificandoeltipodeerror.
Proyecto
AbrimosNetBeansycreamosunnuevoproyecto:
File>NewProjectCategories>Web>WebApplication
AparecelaventanaNewWebApplicationVamosadejarcasitodocomovienepordefault:
ProjectName:Hola
ProjectLocation:dejarcomovienepordefaultocambiaracambiaraun
directorioparticular(ejemplo:/home/yannart/proyectos)
ProjectFolder:sellenasolo
SourceStructure:JavaBluePrints
Server:BundledTomcat(paralosquequieranusarSunApplicationServero
JBoss,dalomismo)
JavaEEVersion:J2EE1.4(losqueutilicenelserverdesunpuedenusaren1.5)
ContextPath:dejarcomoviene.(/Hola)
Ponemoslasdospalomasenloscheckbox.
PulsamoselbotnNext.
PonemoslapalomaenelcheckboxJavaServerFaces
DejamosenblancoelcheckboxdeStruts
ServletURLMapping:dejamoscomoviene(/faces/*)
PonemoslapalomaenelcheckboxValidateXML
DejamosenblandoelcheckboxVerifyObjects
PulsamoselbotnFinish.Porfin!=)
JSP
Tenemosquecrearunosarchivosadicionalesalosquesegeneraronalcrearelproyecto:
entrada.jsp
hola.jsp
Paraestohacemosclicderechoenlacarpeta"WebPages"desuproyectoyluego"NEW>
JSP..."
SolocambiamoselcampoJSPFileName:PonemoslapalomaenelcheckboxJavaServer
Facesentrada
PulseFinish
Repitalosmismospasosparacrearhola.jsp
PodemosborrarelarchivowelcomeJSF.jspyaquenoseutilizara:clicderechoenelarchivo
welcomeJSF.jspdelacarpetaWebPagesyluegoDelete.
Ahoravaaremplazarelcontenidodecadaarchivojsp.
index.jsp
<%@pagecontentType="text/html"%>
<%@pagepageEncoding="UTF8"%>
<!DOCTYPEHTMLPUBLIC"//W3C//DTDHTML4.01Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttpequiv="ContentType"content="text/html;charset=UTF8">
<title>tutorialJSF</title>
</head>
<body>
<h1>BienvenidoaltutorialJSF</h1>
<br/>
<ahref="./faces/entrada.jsp">Dartunombre</a>
</body>
</html>
entrada.jsp
<%Importalostagshtmlparajsf%>
<%@tagliburi="http://java.sun.com/jsf/html"prefix="h"%>
<%Importalostagsdecontrolparajsf%>
<%@tagliburi="http://java.sun.com/jsf/core"prefix="f"%>
<%Utilizaelsiguientearchivoderecursos%>
<f:loadBundlebasename="hola.recursos.mensajes"var="msj"/>
<html>
<head>
<title>Darnombre</title>
</head>
<body>
<f:view>
<h1>
<%Pintamostexto%>
<h:outputTextvalue="#{msj.cabezal}"/>
</h1>
<p>
<%Pintamosmensajesdeerror%>
<h:messagesstyle="color:red"/>
</p>
<%Formulario%>
<h:formid="helloForm">
<%Pintamostexto%>
<h:outputTextvalue="#{msj.dar_nombre}"/>
<%Campodetextoobligatoriocuyovalorsemandaalatributonombre
delBeanpersonaBean%>
<h:inputTextvalue="#{personaBean.nombre}"required="true">
<%laentradadebedetenerentre2y15caracteres%>
<f:validateLengthminimum="2"maximum="15"/>
</h:inputText>
<%botonqueejecutalaaccion%>
<h:commandButtonaction="saluda"value="#{msj.boton}"/>
</h:form>
</f:view>
</body>
</html>
hola.jsp
<%Importalostagshtmlparajsf%>
<%@tagliburi="http://java.sun.com/jsf/html"prefix="h"%>
<%Importalostagsdecontrolparajsf%>
<%@tagliburi="http://java.sun.com/jsf/core"prefix="f"%>
<%Utilizaelsiguientearchivoderecursos%>
<f:loadBundlebasename="hola.recursos.mensajes"var="msj"/>
<html>
<head>
<title>Bienvenido</title>
</head>
<body>
<f:view>
<h1>
<%pintamostextos%>
<h:outputTextvalue="#{msj.signo1}"/>
<h:outputTextvalue="#{msj.saludo1}"/>
<%serecuperaelvalornombredelBeanpersonaBean%>
<h:outputTextvalue="#{personaBean.nombre}"/>
<h:outputTextvalue="#{msj.saludo2}"/>
<h:outputTextvalue="#{msj.signo2}"/>
</h1>
</f:view>
</body>
</html>
JavaBean
File>NewFile...
Categories>JavaBeansObject
FileTypes>JavaBeansComponent
BotonNext
ClassName:PersonaBean
Package:hola
BotnFinish
RemplazamoselcontenidodelarchivoParsonaBean.java:
packagehola;
importjava.beans.*;
importjava.io.Serializable;
/**
*@authoryannart
*/
publicclassPersonaBean{
privateStringnombre;
publicStringgetNombre(){
returnnombre;
}
publicvoidsetNombre(Stringnombre){
this.nombre=nombre;
}
}
.properties
CreamoselarchivoquecontendrlosmensajesutilizadosenlasJSP:
File>NewFile
Categories>Other
FileTipes>PropertiesFile
BotnNext
Cambiamoslossiguientescampos:
FileName:mensajes
Folder:src/java/hola/recursos
PulsamosFinish
Cambiamoselcontenidodeestearchivopor:
#listademensajesutilizadosenlasJSP
cabezal=TutorialJSF
dar_nombre=Porfavorescribasunombre:
saludo1=Bienvenido
saludo2=aJSF
boton=Saludarte
signo1=
signo2=!
facesconfig.xml
Ahorasolonosfaltaremplazarelcontenidodelarchivofacesconfig.xmldelacarpetaConfiguration
faces:
<?xmlversion="1.0"?>
<!DOCTYPEfacesconfigPUBLIC
"//SunMicrosystems,Inc.//DTDJavaServerFacesConfig1.1//EN"
"http://java.sun.com/dtd/webfacesconfig_1_1.dtd">
<facesconfig>
<navigationrule>
<fromviewid>/entrada.jsp</fromviewid>
<navigationcase>
<fromoutcome>saluda</fromoutcome>
<toviewid>/hola.jsp</toviewid>
</navigationcase>
</navigationrule>
<managedbean>
<managedbeanname>personaBean</managedbeanname>
<managedbeanclass>hola.PersonaBean</managedbeanclass>
<managedbeanscope>request</managedbeanscope>
</managedbean>
</facesconfig>
Ejecucindelproyecto
Sihicimostodobien,deberamosdeejecutarsinproblemaelproyecto:
Run>RunMainProyect(opulsamosF6)
Algunascapturasdelaventanadenavegador: