Boa noite,
Estou tentando iterar meu HashMap e depois gravar cada linha deste HashMap no banco, mas não estou conseguindo fazer isto. Como poderia fazer?
Na classe Action, passo o map inteiro para um outro metodo no DAO gravar no banco, mas quando este map chega no metodo do DAO, nao consigo itera-lo para gravar cada linha no banco. Pensei entao na Action iterar este map e passar cada linha para um objeto q instancio e entao passar para o DAO e garvar no BD. Mas nao consigo fazer tb. Alguem tem alguma ideia de como posso fazer isto? pois este map é populado atraves de um request.getParameterNames de um formulario dinamico.
// Método para incluir itens da entrada de produtos por NF
public ActionForward incluirProdutoEstoquePorNF(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("*** EstoqueAction: incluirProdutoEstoquePorNF ***");
EstoqueDAO estoqueDAO = new EstoqueDAO();
ActionMessages messages = new ActionMessages();
EstoqueVO estoqueForm = (EstoqueVO) form;
String opcao = request.getParameter("opcao");
estoqueForm.setOpcao(opcao);
if (estoqueForm.getOpcao().equals("CADASTRAR")){
System.out.println("Entrou no IF...");
EstoqueVO estoqueVO = new EstoqueVO();
HashMap map = new HashMap();
Enumeration names = request.getParameterNames();
while (names.hasMoreElements()) {
String name = (String) names.nextElement();
map.put(name, request.getParameterValues(name));
//System.out.println("map.keySet():" + map.keySet());
//System.out.println("map.values():" + map.values());
}
System.out.println("Map size: " + map.size());
Set<String> chaves = map.keySet();
for (Iterator<String> iterator = chaves.iterator(); iterator.hasNext();)
{
String chave = iterator.next();
if(chave != null)
System.out.println(chave + map.get(chave));
System.out.println("Map size for: " + map.size());
}
int flag = estoqueDAO.incluirProdutoEstoquePorNF(map);
if (flag > 0){
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("sucesso.fornecedorIncluidoComSucesso"));
saveMessages(request, messages);
}else{
System.out.println("INCLUSÃO DE ITEM DE PRODUTO NÃO INCLUSA!");
}
}
//request.setAttribute("estoqueForm", estoqueVO);
request.setAttribute("opcao", estoqueForm.getOpcao());
return mapping.findForward(ConstantsUtil.FWD_SUCESSO);
}
No while deste metodo, populo o map e no for, tento iterar o map para mostrar, mas so consigo ver os nomes dos parametros (chaves do map) os valores nao sao mostrados, aparecem codigos estranhos… neste for, pensei em popular meu objeto EstoqueVO e depois mandar para o DAO persistir os dados… mas não consigo…
O resultado do for é:
Map size: 6
opcao[Ljava.lang.String;@1de498
Map values: {opcao=[Ljava.lang.String;@1de498, codProduto2=[Ljava.lang.String;@8ae45a, codProduto1=[Ljava.lang.String;@95da38, method=[Ljava.lang.String;@29c204, qtdItem1=[Ljava.lang.String;@180cf2a, qtdItem2=[Ljava.lang.String;@df48c4}
Map size for: 6
codProduto2[Ljava.lang.String;@8ae45a
Map values: {opcao=[Ljava.lang.String;@1de498, codProduto2=[Ljava.lang.String;@8ae45a, codProduto1=[Ljava.lang.String;@95da38, method=[Ljava.lang.String;@29c204, qtdItem1=[Ljava.lang.String;@180cf2a, qtdItem2=[Ljava.lang.String;@df48c4}
Map size for: 6
codProduto1[Ljava.lang.String;@95da38
Map values: {opcao=[Ljava.lang.String;@1de498, codProduto2=[Ljava.lang.String;@8ae45a, codProduto1=[Ljava.lang.String;@95da38, method=[Ljava.lang.String;@29c204, qtdItem1=[Ljava.lang.String;@180cf2a, qtdItem2=[Ljava.lang.String;@df48c4}
Map size for: 6
method[Ljava.lang.String;@29c204
Map values: {opcao=[Ljava.lang.String;@1de498, codProduto2=[Ljava.lang.String;@8ae45a, codProduto1=[Ljava.lang.String;@95da38, method=[Ljava.lang.String;@29c204, qtdItem1=[Ljava.lang.String;@180cf2a, qtdItem2=[Ljava.lang.String;@df48c4}
Map size for: 6
qtdItem1[Ljava.lang.String;@180cf2a
Map values: {opcao=[Ljava.lang.String;@1de498, codProduto2=[Ljava.lang.String;@8ae45a, codProduto1=[Ljava.lang.String;@95da38, method=[Ljava.lang.String;@29c204, qtdItem1=[Ljava.lang.String;@180cf2a, qtdItem2=[Ljava.lang.String;@df48c4}
Map size for: 6
qtdItem2[Ljava.lang.String;@df48c4
Map values: {opcao=[Ljava.lang.String;@1de498, codProduto2=[Ljava.lang.String;@8ae45a, codProduto1=[Ljava.lang.String;@95da38, method=[Ljava.lang.String;@29c204, qtdItem1=[Ljava.lang.String;@180cf2a, qtdItem2=[Ljava.lang.String;@df48c4}
Map size for: 6
Obrigado…