Olá pessoal, estou com um problema com o strut,
seguinte,
tenho em meu jsp um submit(um botão em que quando dou submit, ele vai na minha Action.class , faz um calculo e me retorna para minha propria pagina(meu proprio foward), e assim logo depois que faço este 1º submit, já não consigo dar mais nenhum submit, me para que ele "perde meu DynaActionForm, ou algo parecido.)
erro:
javax.servlet.ServletException: BeanUtils.populate
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:495)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:804)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
java.util.ArrayList.RangeCheck(Unknown Source)
java.util.ArrayList.get(Unknown Source)
org.apache.struts.action.DynaActionForm.get(DynaActionForm.java:252)
org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:386)
org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:340)
org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:684)
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:804)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
jsp:
<tr>
<td>
<html:text property="percentualVenda" size="14" maxlength="13" onkeypress="return formataNumero(this, event,'.',',', 2)" styleClass="texto" />
</td>
<td>
<html:text property="valorFinalVenda" size="14" maxlength="13" readonly="true" styleClass="texto_obrigatorio" />
</td>
</tr>
</table>
</fieldset>
</div>
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<html:submit styleId="botao_menu" property="evento">
<fmt:message key="label.calcular" />
</html:submit>
</td>
</tr>
</table>
Action.class
public ActionForward eventoListaDespesas(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
DynaActionForm dynaForm = (DynaActionForm)form;
String evento = request.getParameter("evento");
String tipoOperacao = dynaForm.getString("tipoOperacao");
ArrayList listaVenda = (ArrayList)dynaForm.get("listaDespesasProdutoVenda");
ArrayList listaAluguel = (ArrayList)dynaForm.get("listaDespesasProdutoLocacao");
ArrayList listaAux = new ArrayList();
ArrayList lista = null;
BigDecimal somaValor = new BigDecimal(0);
if("Remover".equals(evento)){
if("V".equals(tipoOperacao))
lista = listaVenda;
else if("L".equals(tipoOperacao))
lista = listaAluguel;
for(int pos = 0; pos < lista.size(); pos++){
DespesasProdutoVO despesasProdutoVO = (DespesasProdutoVO) lista.get(pos);
String flagInclusao = despesasProdutoVO.getFlagInclusao();
if("S".equals(flagInclusao)){
listaAux.add(despesasProdutoVO);
somaValor.add(despesasProdutoVO.getValorDespesa());
}
}
if("V".equals(tipoOperacao)){
dynaForm.set("listaDespesasProdutoVenda", listaAux);
dynaForm.set("valorUnidadeCustoFinalVenda", GrinaldasGeralUtil.formataBigDecimalParaString(somaValor));
}
else if("L".equals(tipoOperacao)){
dynaForm.set("listaDespesasProdutoLocacao", listaAux);
dynaForm.set("valorUnidadeCustoFinalLocacao", GrinaldasGeralUtil.formataBigDecimalParaString(somaValor));
}
}
else{
DespesasProdutoVO despesasProdutoVO = new DespesasProdutoVO();
if("V".equals(tipoOperacao))
if(listaVenda.size() == 0){
listaAux.add(despesasProdutoVO);
dynaForm.set("listaDespesasProdutoVenda", listaAux);
}else{
listaVenda.add(despesasProdutoVO);
dynaForm.set("listaDespesasProdutoVenda", listaVenda.add(despesasProdutoVO));
}
else if("L".equals(tipoOperacao))
if(listaAluguel.isEmpty()){
listaAux.add(despesasProdutoVO);
dynaForm.set("listaDespesasProdutoLocacao", despesasProdutoVO);
}else{
listaAluguel.add(despesasProdutoVO);
dynaForm.set("listaDespesasProdutoLocacao", listaAluguel.add(despesasProdutoVO));
}
}
return mapping.findForward("produtoMan");
}
Desde já agradeço
Att. Felipe Reis