Sunteți pe pagina 1din 22

SISTEMAS DE INFORMAO

Tcnicas Avanadas de Programao com Java e C#

Prof. MSc. Gustavo Rodrigues

2
AGENDA

Trabalhando com colees


Estratgias

Usando ui:repeat
Loops simples
Loops aninhandos
Atributos adicionais

3
JSF 2 COLEES DE
DADOS

4
Construes JSF para dados de tamanho varivel

Bean
Ter alguma propriedade no bean que retorna toda a string
html baseada em uma coleo
h:dataTable
Usar um componente do JSF que constri uma tabela a
partir de uma coleo. Alguns componentes de terceiros
como t:dataList (MyFaces/Tomahawk) oferecem ainda
mais opes
Criar seu prprio componente composto
Fazer seu prprio componente que constri algumas tags
html a partir de uma coleo
ui:repeat
Faz loopings explcitos na pgina de resultado
5
Bean

Pros
Muito simples para o autor da pgina usar

Contras
O autor da pgina tem muito pouco controle sobre como a sada
ser apresentada
Qualquer alterao pode necessitar que o servidor onde est a
classe seja reiniciado
Vai contra a separao de camadas e preocupaes do MVC
Cdigo java que constri grandes trechos HTML sempre
indesejvel

6
h:dataTable

Situao
Os dados esto em uma lista ou array, onde cada entrada contm
dados correspondentes a uma linha da tabela

Abordagem
Use h:dataTable com um h:column por coluna da tabela

Prs
Maneira flexvel e relativamente simples de construir uma tabela

Contras
Usado apenas para gerar tabelas
Dados vem de uma fonte nica. Fonte de cada coluna a
mesma em cada iterao. No h como mudar isso.

7
h:dataTable (sintaxe)

8
ui:repeat

Situao
Voc tem dados de tamanho varivel, mas no quer dar a sada
como uma tabela HTML
Voc no pode construir facilmente um componente que d a
flexibilidade necessria ao autor da pgina

Abordagem
Use ui:repeat praticamente da mesma maneira que usaria o
c:forEach do JSTL

Prs
D controle explcito ao autor da pgina

Contras
HTML tradicional no tem loop, assim a pgina fica mais
complexa de entender 9
ui:repeat (sintaxe)

Sintaxe bsica
<ui:repeat var=someVar value=#{someCollection}>
<qualquer cdigo HTML>
#{someVar.someProperty}
</qualquer cdigo HTML>
</ui:repeat>

Cdigo Java anlogo


for(someType someVar : someCollection){
doSomethingWith(someVar);
}

10
Passos para usar ui:repeat

Ter certeza de que o JSTL 1.2 est disponvel


Se o servidor no for a verso 6 do Java EE ao menos, coloque os jar do
JSTL no projeto

Incluir o namespace facelets


<html xmlns:ui=http://xmlns.jcp.org/jsf/facelets>

Tornar a coleo acessvel


Criar mtodo get para retornar List, array ou at ResultSet

Usar loop nos facelets


<ul>
<ui:repeat var=color value=#{item.availableColors}>
<li>#{color}</li>
</ui:repeat>
11
</ul>
Loop simples: cdigo facelet (parte 1)

12
Loop simples: cdigo facelet (parte 2)

13
Loop simples: cdigo managed bean

@ManagedBean
public class Person1
{
private String firstName, lastName, level;
private String[] languages;

//mtodos get e set

//mtodo que carrega a propriedade languages


}

14
Loop simples: resultado

15
Loops aninhados: cdigo java

public class Programmer


{
private String firstName, lastName, level;
private String[] languages;

//mtodos get e set

16
Loops aninhados: managed bean

@ManagedBean
public class Company1
{
private List<Programmer> programmers;

public List<Programmer> getProgrammers(){


return programmers;
}

//Mtodo que adiciona diversos programadores a empresa


//Ex: programmers = new ArrayList<Programmer>();
// Programmer p = new Programmer();
// Define as propriedades de Programmer
// programmers.add(p);
}

17
Loops aninhados: facelet

18
Loops aninhados: resultado

19
Atributos adicionais

20
Atributos adicionais

21
Copyright2016
Copyright 2015 Prof.
Prof.MSc.
Leandro
Gustavo
Rubim
Rodrigues

Todos direitos reservados. Reproduo ou divulgao total ou parcial


deste documento expressamente probido sem o consentimento
formal, por escrito, do Professor (autor).

S-ar putea să vă placă și