Checkbox com struts - como apagar vários registros de 1 só vez?

Boa tarde pessoal,

Tenho um sistema que mostra uma lista de produtos com o Struts.

Eu gostaria que ao lado de cada linha houvesse um checkbox e que, na parte de cima da tela, o botão “Apagar” excluísse todos os registros selecionados.

A parte de mostrar a coluna com checkbox e a de associar cada checkbox ao código do produto eu consegui (vendo alguns posts daqui), porém estou com problemas na hora de excluir os registros selecionados quando clico o botão.

Se alguém já tiver feito algo parecido poderia disponibilizar o código? Procurei no fórum mas não achei o que queria…

Obrigado desde já!

O que eu faço é o seguinte:

no código jsp, (dentro do iterate) para exibir o check box:

<html:multibox property="keyHashExcluir" >
                <bean:write name="empresas" property="key"/>
</html:multibox>

No meu form devo ter o atributo e gets e sets:

    private String[] keyHashExcluir;   
    public void setKeyHashExcluir(String[] keyHashExcluir) {
        this.keyHashExcluir = keyHashExcluir;
    }

e na minha action faço o seguinte.

 // RECUPERA O HASH COM AS PK PARA EXCLUSAO
String[] keyHash = empresaForm.getKeyHashExcluir();
        	
// PERCORRE O HASH EXCLUINDO NO BANCO E DEPOIS NA SESSAO
for (int i=0; i < keyHash.length; i++ ){
    EmpresaVO empresaVO = (EmpresaVO) empresaMap.get(keyHash[i]);
    if(EmpresaBD.getInstance().delete(empresaVO.getCod_empresa())){
               empresaMap.remove(keyHash[i]);
    }
}

Lembrando que eu passso o value key no checkbox pq recupero de um hashMap, mas se preferi pode passar o código, nesse caso devera comparar com o código do VO.

Olá,

Quando o sistema vai exibir a página jsp (código a seguir) dá um erro no Tomcat (fim da página). Criei a classe ProcessForm e associei a processForm no struts-config.xml, porque será que dá este erro?

Pagina JSP:

<%@ taglib uri=“WEB-INF/struts-html.tld” prefix=“html” %>
<%@ taglib uri=“WEB-INF/struts-bean.tld” prefix=“bean” %>
<%@ taglib uri=“WEB-INF/struts-logic.tld” prefix=“logic” %>

MVC teste multibox function submeter(action) {
        document.processForm.submit();
    }
</script>

    	<tr>
    		<td><bean:write name="produto" property="codigo" /></td>
    		<td>
    			<!-- html:link href="excluiProduto.do" paramId="codigo" paramProperty="codigo"-->
				<html:link href="excluiProduto.do" paramId="codigo" paramName="produto" paramProperty="codigo">	
    				<bean:write name="produto" property="preco" />
    			</html:link>
    		</td>
    		<td><bean:write name="produto" property="preco" /></td>
    		
    		<td><html:multibox property="keyHashExcluir" >
            		<bean:write name="produto" property="codigo"/>
				</html:multibox>
			</td>
    	</tr>
</logic:iterate>
Código Nome Preço
		<input type="button" name="apagar" value="Apagar" onclick="submeter()">

</html:form>

-->

[i][color=blue][/color]

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Mensagem de erro do Tomcat:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Cannot retrieve definition for form bean null
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.listaProdutos_jsp._jspService(listaProdutos_jsp.java:192)[color=red][/color]

[size=9][/size]

Bem, acabei fazendo uma alteração que deu certo:

Por alguma razão a tag <html:form> não funcionou pra mim, misteriosamente, então alterei para <form> mesmo.

O checkbox eu alterei para <include type=“checkbox”> ao invés de <html:multibox>.
Para pegar o array de registros selecionados na action eu coloquei request.getParameterValues(“answers”).

Bom, é isso!

Vc criou o form-bean para ProcessForm no struts-config.xml?

Sim, criei.

Provavelmente deve ser um erro no mapeamento de suas actions, no struts-config.xml…

Posta ele ai pra mim dar uma olhada…

Olá,

Agora não deu erro ao mostrar a lista com os checkboxes.

Usei
<td>
<html:multibox name=“produto” property=“checkbox” >
<bean:write name=“produto” property=“codigo”/>
</html:multibox>
</td>

Só que tive que criar um atributo “checkbox” no meu bean “Produto”, e fazer overloading com o método construtor.

Valeu!