Bom, já passei por milhares de códigos, e estou apanhando feio com meu chefe no meu cangote... a página monta certinho, mas na hora de salvar, dá um erro e nem sequer chega na minha action...
O HTML resultante que está certinho:<form name="premissaForm" method="post" action="/teste/premissa.do">
<hr>
<select name="bloco[0].codigoDominio">
<option value="0">Selecione</option>
<option value="65">TS_TESTE</option>
<option value="30" selected="selected">CD_UF</option>
<option value="17">DT_POR_BOOL</option>
</select>
<br>
<select name="bloco[0].itemPremissa[0].operador">
<option value="==">IGUAL</option>
<option value="!=" selected="selected">DIFERENTE</option>
</select>
<input type="text" name="bloco[0].itemPremissa[0].valor" value="MG">
<br>
<select name="bloco[0].itemPremissa[1].operador">
<option value="==">IGUAL</option>
<option value="!=" selected="selected">DIFERENTE</option>
</select>
<input type="text" name="bloco[0].itemPremissa[1].valor" value="SP">
<br>
<select name="bloco[0].itemPremissa[2].operador">
<option value="==">IGUAL</option>
<option value="!=" selected="selected">DIFERENTE</option></select>
<input type="text" name="bloco[0].itemPremissa[2].valor" value="RJ">
<hr>
<select name="bloco[1].codigoDominio">
<option value="0">Selecione</option>
<option value="65">TS_TESTE</option>
<option value="30" selected="selected">CD_UF</option>
<option value="17">DT_POR_BOOL</option>
</select>
<br>
<select name="bloco[1].itemPremissa[3].operador"><option value=">">MAIOR</option>
<option value="<">MENOR</option>
<option value=">=" selected="selected">MAIOR OU IGUAL</option>
<option value="<=">MENOR OU IGUAL</option>
<option value="==">IGUAL</option>
<option value="!=">DIFERENTE</option>
</select>
<input type="text" name="bloco[1].itemPremissa[3].valor" value="10">
<br>
<select name="bloco[1].itemPremissa[4].operador">
<option value=">">MAIOR</option>
<option value="<" selected="selected">MENOR</option>
<option value=">=">MAIOR OU IGUAL</option>
<option value="<=">MENOR OU IGUAL</option>
<option value="==">IGUAL</option>
<option value="!=">DIFERENTE</option>
</select>
<input type="text" name="bloco[1].itemPremissa[4].valor" value="50">
<hr>
<select name="bloco[2].codigoDominio">
<option value="0">Selecione</option>
<option value="52" selected="selected">DTS_PTY</option>
<option value="12">T2_ACESS_Z8</option>
<option value="65">TS_TESTE</option>
<option value="4">HU_PRO</option>
<option value="30">CD_UF</option>
<option value="17">DT_POR_BOOL</option>
</select>
<br>
<select name="bloco[2].itemPremissa[5].operador">
<option value=">" selected="selected">MAIOR</option>
<option value="<">MENOR</option>
<option value=">=">MAIOR OU IGUAL</option>
<option value="<=">MENOR OU IGUAL</option>
<option value="==">IGUAL</option>
<option value="!=">DIFERENTE</option>
</select>
<input type="text" name="bloco[2].itemPremissa[5].valor" value="100000,00">
<hr>
<select name="bloco[3].codigoDominio">
<option value="0">Selecione</option>
<option value="52">DTS_PTY</option>
<option value="12">T2_ACESS_Z8</option>
<option value="65">TS_TESTE</option>
<option value="4">HU_PRO</option>
<option value="30">CD_UF</option>
<option value="17" selected="selected">DT_POR_BOOL</option>
</select>
<br>
<select name="bloco[3].itemPremissa[6].operador">
<option value="==" selected="selected">IGUAL</option>
<option value="!=">DIFERENTE</option></select>
<select name="bloco[3].itemPremissa[6].valor">
<option value="S">Selecione</option>
<option value="1" selected="selected">VERDADEIRO</option>
<option value="0">FALSO</option>
</select>
<hr>
<input type="submit" value="SALVA"></form>
<form-bean name="premissaForm" type="regras.PremissaForm"/>
...
<action name="premissaForm" path="/premissa" scope="request" ---tentei mudar para session mas nada
type="regras.PremissaAction" validate="false">
<forward name="home" path="/WEB-INF/jsp/editar.jsp"/>
</action>
import org.apache.struts.action.ActionForm;
public class PremissaForm extends ActionForm {
private static final long serialVersionUID = 1L;
private BlocoBean[] bloco = new BlocoBean[100];
// private Collection<BlocoBean> bloco = new ArrayList<BlocoBean>(); -- comecei tentando isso mas nada
public BlocoBean[] getBloco() {
return bloco;
}
public void setBloco(BlocoBean[] bloco) {
this.bloco = bloco;
}
public class BlocoBean {
private ItemPremissa[] itemPremissa = new ItemPremissa[100];
private String codigoDominio;
public ItemPremissa[] getItemPremissa() {
return itemPremissa;
}
public void setItemPremissa(ItemPremissa[] itemPremissa) {
this.itemPremissa = itemPremissa;
}
public String getCodigoDominio() {
return codigoDominio;
}
public void setCodigoDominio(String codigoDominio) {
this.codigoDominio = codigoDominio;
}
}
public class ItemPremissa {
private String operador;
private String valor;
public String getOperador() {
return operador;
}
public void setOperador(String operador) {
this.operador = operador;
}
public String getValor() {
return valor;
}
public void setValor(String valor) {
this.valor = valor;
}
}
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: BeanUtils.populate
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:495)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:805)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
org.apache.commons.beanutils.NestedNullException: Null property value for 'bloco[0]'
org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:669)
org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715)
org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:884)
org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811)
org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298)
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:493)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:805)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
HELP???
AHH, mais uma coisa:
Na verdade, na JSP mesmo (e não no HTML pronto e limpo que coloquei aí) as selects de matriz dentro de matriz estão saindo tipo:
resultantes de tags como:
<% String valor = "bloco["+indiceBlocos+"].itemPremissa["+indicePremissas+"].valor"; %>
Alguém sabe um jeito de por o "indexed" pra ambas matrizes serem apresentadas no NAME da tag e não no ID??? Ou seja, resultando em: