Rosiclia Frasson
Componentes JSF
No JSF 2.0 as telas so definidas por meio arquivos .xhtml. A especificao do JSF possui um
conjunto de componentes que podem ser utilizados na construo dessas telas. Esses componentes
esto divididos duas bibliotecas:
HTML (http://java.sun.com/jsf/html): A biblioteca HTML possui os componentes visuais que
geram o HTML da pgina.
Core (http://java.sun.com/jsf/core): A biblioteca core possui componentes no visuais, como
validadores.
Com a tecnologia JSF, os componentes so renderizados em tempo de execuo, o que permite
que um mesmo componente seja renderizado de acordo com o tipo de cliente que est solicitando, ou
seja, uma mesma pgina ser renderizada de formas diferentes se for acessado por um computador e
por um celular.
Para a utilizao dos componentes necessrio que as bibliotecas estejam importadas nos
arquivos xhtml, atravs do pseudo-atributo xmlns. Segue um exemplo de como devem ser importadas
as duas bibliotecas mencionadas.
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
importante perceber que foram declarados prefixos para as duas bibliotecas. Para a biblioteca
core foi declarado o prefixo f e para a biblioteca html foi declarado o prefixo h. Podem ser declarados
qualquer prefixo porm os mencionados so considerados padro e usados pelas maioria dos
desenvolvedores.
Biblioteca HTML
Elementos HTML
Tag
Descrio
form
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>
113
Rosiclia Frasson
<title>Exemplo formulrio</title>
</h:head>
<h:body>
<h:form>
<!--Aqui
Aqui devem ser colocados os campos do formulrio-->
formulrio
</h:form>
</h:body>
</html>
inputText
Campo de entrada de dados com apenas uma linha. Pode ser vinculado
com um atributo de um managed bean.
<h:inputText value="#{usuarioBean.usuario.nome}"
"#{usuarioBean.usuario.nome}" id="nome"/>
inputTextArea
inputSecret
value="#{usuarioBean.usuario.observacoes}"
"#{usuarioBean.usuario.observacoes}"
inputHidden
/>
Campo oculto. Este campo pode ser utilizado para inserir informaes
que devem ser enviadas automaticamente quando um formulrio
enviado ao servidor.
<h:inputHidden/>
outputLabel
outputLink
114
Rosiclia Frasson
<h:outputLink value="http://www.google.com">
<h:outputText value="Para
"Para mais informaes clique aqui"/>
</h:outputLink>
outputFormat
outputText
commandButton
commandLink
message
115
Rosiclia Frasson
</h:inputText>
<h:message for="idade"/>
</h:panelGroup>
messages
graphicImage
selectOneListBox
116
selectOneMenu
Rosiclia Frasson
selectOneRadio
selectBooleanCheckBox
117
Rosiclia Frasson
selectManyCheckBox
selectManyListBox
118
selectManyMenu
Rosiclia Frasson
panelGrid
119
Rosiclia Frasson
<f:selectItem itemLabel="Feminino"
"Feminino" itemValue="F"/>
<f:selectItem itemLabel="Masculino"
"Masculino" itemValue="M"/>
</h:selectOneRadio>
</h:panelGrid>
panelGroup
<h:panelGroup>
h:panelGroup>
<h:inputText value="#{usuarioBean.usuario.login}"
"#{usuarioBean.usuario.login}"
id=
id="login"
validatorMessage="O
"O login deve ser composto apenas por
letras e deve possuir entre 6 e 18 caracteres.">
caracteres."
<f:validateRegex pattern="[a-z]{6,18}"
z]{6,18}"/>
</h:inputText>
<h:message for="login"/>
</h:panelGroup>
120
dataTable
Rosiclia Frasson
121
Rosiclia Frasson
import br.com.rosicleiafrasson.cap10componentestabela.modelo.Contato;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
@ManagedBean
public class ContatoBean {
<h:head>
<title>Exemplo Tabela</title>
</h:head>
<h:body>
<h:form>
<h:dataTable border="1"
value="#{contatoBean.contatos}" var="contato">
<f:facet name="header">
<h:outputText value="Agenda de Contatos"/>
</f:facet>
122
Rosiclia Frasson
<h:column>
<f:facet name="header">
<h:outputText value="Nome"/>
value=
</f:facet>
<h:outputText value="#{contato.nome}"
"#{contato.nome}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Telefone"/>
value=
</f:facet>
<h:outputText
value=
value="#{contato.telefone}"/>
</h:column>
</h:dataTable>
</h:form>
</h:body>
</html>
column
123
Rosiclia Frasson
Descrio
id
binding
rendered
columns="4" rendered="#{funcionarioBean.ehUsuario}">
styleClass
Especifica uma classe CSS que contm definies de estilo. Pode ser
utilizado em todos os elementos HTML.
<h:inputText value="#{candidatoBean.candidato.nome}"
id="nome" styleClass="cxTexto" />
value
valueChangeListener
<h:selectOneMenu id="cidades">
<f:selectItems value="#{testeBean.cidades}" />
</h:selectOneMenu>
converter
124
Rosiclia Frasson
<h:selectOneMenu value="#{cadastrarMoradorBean.morador.apartamento}"
"#{cadastrarMoradorBean.morador.apartamento}"
converter=
converter="entityConverter">
<f:selectItems value="#{cadastrarMoradorBean.apartamentos}"
"#{cadastrarMoradorBean.apartamentos}"
var="apartamento"
"apartamento" itemLabel="#{apartamento.apartamento}"
"#{apartamento.apartamento}"/>
</h:selectOneMenu>
validator
required
Descrio
accesskey
acceptcharset
alt
border
dir
disable
125
Rosiclia Frasson
maxlenght
readonly
rel
rows
size
style
tabindex
Descrio
onblur
onchange
onclick
126
Rosiclia Frasson
onfocus
onkeydown
onkeypress
onkeyup
onmousedown
onmousemove
onmouseout
onmouseover
onmouseup
onreset
onselect
onsubmit
Biblioteca Core
Tag
Descrio
view
subview
facet
127
Rosiclia Frasson
<h:column>
<f:facet name="header">
<h:outputText value="Telefone"/>
value=
</f:facet>
<h:outputText value="#{contato.telefone}"
"#{contato.telefone}"/>
</h:column>
</h:dataTable>
attribute
param
action
actionListener
valueChangeListener
Conversores:
128
convertDateTime
Rosiclia Frasson
convertNumber
129
Rosiclia Frasson
<h:inputText value="#{candidatoBean.candidato.peso}"
"#{candidatoBean.candidato.peso}" id="peso">
<f:convertNumber maxIntegerDigits="3" />
</h:inputText>
130
Rosiclia Frasson
converter
Validadores
validateDoubleRange
validateLenght
validateLongRange
131
Rosiclia Frasson
validateRegex
<h:panelGroup>
<h:inputText value="#{usuarioBean.usuario.login}"
"#{usuarioBean.usuario.login}"
id=
id="login"
validatorMessage="O
"O login deve ser composto apenas por
letras e deve possuir entre 6 e 18 caracteres.">
caracteres."
<f:validateRegex pattern="[a-z]{6,18}"
z]{6,18}"/>
</h:inputText>
<h:message for="login"/>
</h:panelGroup>
validator
loadBundle
selectItems
132
Rosiclia Frasson
<f:selectItems value="#{usuarioBean.areas}"
"#{usuarioBean.areas}"/>
</h:selectOneMenu>
selectItem
133