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:
[code]
Selecione TS_TESTE CD_UF DT_POR_BOOL
IGUAL DIFERENTE
<input type="text" name="bloco[0].itemPremissa[0].valor" value="MG">
IGUAL DIFERENTE
<input type="text" name="bloco[0].itemPremissa[1].valor" value="SP">
IGUAL DIFERENTE
<input type="text" name="bloco[0].itemPremissa[2].valor" value="RJ">
Selecione TS_TESTE CD_UF DT_POR_BOOL
MAIOR MENOR MAIOR OU IGUAL MENOR OU IGUAL IGUAL DIFERENTE
<input type="text" name="bloco[1].itemPremissa[3].valor" value="10">
<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">
Selecione DTS_PTY T2_ACESS_Z8 TS_TESTE HU_PRO CD_UF DT_POR_BOOL
MAIOR MENOR MAIOR OU IGUAL MENOR OU IGUAL IGUAL DIFERENTE
<input type="text" name="bloco[2].itemPremissa[5].valor" value="100000,00">
Selecione DTS_PTY T2_ACESS_Z8 TS_TESTE HU_PRO CD_UF DT_POR_BOOL
IGUAL DIFERENTE
<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>[/code]
as configurações do Struts-Config
[code]
…
<action name=“premissaForm” path="/premissa" scope=“request” —tentei mudar para session mas nada
type=“regras.PremissaAction” validate=“false”>
[/code]
PremissaForm
[code]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 bloco = new ArrayList(); – comecei tentando isso mas nada
public BlocoBean[] getBloco() {
return bloco;
}
public void setBloco(BlocoBean[] bloco) {
this.bloco = bloco;
}[/code]
BlocoBean
[code]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;
}
}[/code]]
ItemPremissa
[code]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;
}
}[/code]
ERRO
[code]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)[/code]
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"; %>
<html:select styleId="<%= valor %>" name=“itemPremissa” property=“operador”>
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: