Pessoal ja tentei de tudo e por isso venho novamente pedir ajuda para vocês.
Acontece o seguinte:
Eu tenho o seginte model:
@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;
}
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);
}
}
}
}
// outros getters & setters
}
E estou querendo exibi-lo na DisplayTag. Antes de mandar pela tag eu faço um filtro nessa action:
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
DaoFactory dao = new DaoFactory();
ArrayList<Area> area = dao.getAreaDAO().readAll();
dao.close();
ArrayList<Area> arrange = new ArrayList<Area>();
for (Area a : area) {
if (a.getArea() == null) {
a.setSubs();
arrange.add(a);
}
}
request.setAttribute("area", arrange);
return mapping.findForward("area");
}
Ele faz um filtra para colocar no arrange apenas as areas que possuem subareas.
Então oque eu quero e não estou conseguindo é fazer com que exiba dentro de cada linha uma outra tabela contendo as subareas que são armazenadas no atributo subs.
Estou por enquanto fazendo uma tabela só para tentar exibir as subareas. Mas não estou tendo sucesso pois ele teima em dar esse erro:
org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/busca/sAreas.jsp at line 57
54: </div>
55: <div id="table1">
56: <c:forEach items="${area}">
57: <display:table name="${area.subs}" export="true" >
58: <display:column property="nome" title="Nome" />
59: <display:column media="html" >
60: <div id="cad" align="center">
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause
java.lang.NumberFormatException: For input string: "subs"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:447)
java.lang.Integer.parseInt(Integer.java:497)
javax.el.ListELResolver.coerce(ListELResolver.java:166)
javax.el.ListELResolver.getValue(ListELResolver.java:51)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
org.apache.el.parser.AstValue.getValue(AstValue.java:118)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:925)
org.apache.jsp.admin.busca.sAreas_jsp._jspx_meth_display_005ftable_005f0(sAreas_jsp.java:333)
org.apache.jsp.admin.busca.sAreas_jsp._jspx_meth_c_005fforEach_005f0(sAreas_jsp.java:301)
org.apache.jsp.admin.busca.sAreas_jsp._jspx_meth_html_005fhtml_005f0(sAreas_jsp.java:168)
org.apache.jsp.admin.busca.sAreas_jsp._jspService(sAreas_jsp.java:90)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
Estou tentando assim:
<c:forEach items="${area}">
<display:table name="${area.subs}" export="true" >
<display:column property="nome" title="Nome" />
<display:column media="html" >
<div id="cad" align="center">
<html:form action="/altUser.do" >
<html:radio property="btenviar" value="Alterar" >Alterar</html:radio>
<html:radio property="btenviar" value="Excluir" >Excluir</html:radio>
<span class="botao">
<html:submit value="Ok" />
</span>
</html:form>
</div>
</display:column>
</display:table>
</c:forEach>
Alguem sabe oque esta acontecendo ou como fazer isso dar certo??
Agradeço desde ja