Erro Struts submetendo para mesma tela

4 respostas
A

Caros,

Tenho uma tela JSP que possui dados do cliente para uma determinada data. Desejo fazer uma implementação que apresente um campo de data que ao ser mudado submeta a pesquisa para mesma tela mostrando os dados do cliente para esta nova data.

Já adicionei o tal campo e a pesquisa ocorre normalmente até determinado ponto. Ao mudar o campo de data, um javascript chama o form.submit e refaz a pesquisa. O parâmetro da nova data passa normalmente para as demais camadas bem como o código do cliente, de forma que a pesquisa seja refeita para este cliente na nova data. Só que em algum lugar na “engrenagem” dos frameworks ocorre um erro bizarro:

2008-04-14 18:53:00,859 ERROR [action] | Servlet.service() for servlet action threw exception

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

at java.util.ArrayList.RangeCheck(Unknown Source)

at java.util.ArrayList.get(Unknown Source)

at org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:433)

at org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:340)

at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:664)

at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715)

at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:884)

at org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811)

at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298)

at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:495)

at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:798)

at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:205)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)

at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

at com.sicredi.crm.webapp.filter.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:61)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

Detalhe: Se após a tela de erro eu digitar manualmente a URL com o id do cliente, a tela é recarregada normalmente trazendo os dados da nova data conforme esperado. Só que no submit é que tá dando esse erro. E não tenho a mínima idéia de que raio de array é esse! :???:

Já tentei diferentes modos de declaração do form, mas nada resolveu:

(simplesmente)

Enfim, tenho a esperança de que alguém por aí já tenha visto este erro e possa me dar uma dica.

Obrigado!

4 Respostas

A

Resolvido!!
Tava chupando bala! :lol:

Feito!

P

amigo, se possivel posta como vc fez.

valew

A

O problema era o seguinte…
No meu form, apesar de ser só pra exibição de dados, tinha vários campos input desabilitados com nomes como “cadastro.compras[0].produto”.
Então quando eu dava o submit o Struts lia esses parâmetros e tentava associar os valores no form, mas não encontrava o array cadastro.compras[0].
Ainda estou penando um pouco aqui, mas pelo menos já sei qual é a origem do erro. Acho que vou ter que botar um nome qualquer nos campos para que o Struts simplesmente não os reconheça e não faça nada com eles.

Feito

A

Era isso mesmo!
Prefixei todos os nomes dos campos input com um “_”. Assim o Struts recebe os parâmetros mas não faz nada visto que não encontra nenhuma propriedade equivalente no Form.

Criado 14 de abril de 2008
Ultima resposta 15 de abr. de 2008
Respostas 4
Participantes 2