Eu tenho uma lista com diversas areas e algumas são areas mestres e outras são subareas dessas areas por exemplo:
Area mestre: Tech
Subareas: DEV, WEB, Direct e Design
Area mestre: Administrativo
Subareas: RH, TIC, ADM, Financeiro
Oque eu queria era usa a display tag para exibir varias tabelas. Cada tabela contendo a area mestre e apenas suas subareas. Como posso fazer esse filtro?
Eu ja tive meio que uma ideia mas não consegui implementar.
Seria setar um atributo apenas com as areas mestre, e então usaria o forEach para fazer as tabelas, e setaria tambem um atributo com todas as areas. Ai na hora de criar a tabela eu filtraria p saber se o id que referencia a area mestre é igual ao id da area mestre que esta sendo usado na tabela.
Mas não consegui fazer isso? VOcês tem alguma ideia de como fazer?? É possivel?? Me ajudem por favor.
Mas eu ainda estou com um pequeno problema que não consegui identificar ou talvez eu esteja fazendo da maneira errada. Quando eu executo ele retorna esse erro:
[code]org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/busca/sAreas.jsp at line 57
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
DaoFactory dao = new DaoFactory();
//pega todas as areas do BD
ArrayList<Area> area = dao.getAreaDAO().readAll();
dao.close();
ArrayList<Area> arrange = new ArrayList<Area>();
//verifica se é mestre, seta as subareas e adiciona em um novo ArrayList
for (Area a : area) {
if (a.getArea() == null) {
a.setSubs();
arrange.add(a);
}
}
session.setAttribute("area", arrange);
return mapping.findForward("area");
}[/code]
Model Area
[code]@Entity @Table(name = “area”)
public class Area implements java.io.Serializable {
@Id
@GeneratedValue
private String id;
private String nome;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "area")
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Area area;
@OneToMany(mappedBy = "area", fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Collection<Usuarios> usuarios;
@OneToMany(mappedBy = "area", fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Collection<Area> subareas;
@Transient
private ArrayList<Area> subs;
public ArrayList<Area> getSubs() {
return subs;
}
//seta a subarea caso seja area mestre
public void setSubs() {
DaoFactory dao = new DaoFactory();
ArrayList<Area> areas = dao.getAreaDAO().readAll();
dao.close();
this.subs = new ArrayList<Area>();
for (Area a : areas) {
if (a.getArea() != null) {
if (this.id.equals(a.getArea().getId())) {
this.subs.add(a);
}
}
}
}[/code]
Foi exatamente isso. Acho que preciso estudar um poko mais afundo essa taglib Core e oque para que serve cada atributo. Agora só preciso me virar com o CSS e com a condisção caso seja nulo. Mas isso eu me viro.