STRUTS INTERATE COM UM <html:text COMO RECUPERAR OS VALORES

3 respostas
S

Ola Pessoal
Vou descrever passo a passo o meu problema.

Tenho uma consulta de produto que o interate me traz todos os produtos como segue:

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

html:html

<html:form action=“conprod” method=“post” >
<html:hidden property=“action”/>

<logic:present name=“produtodescricao”>












<logic:iterate name=“produtodescricao” id=“bean”>





</logic:iterate>




Consulta Produtos Ordem de Descrição

Código Descricação QTd. Uni. Preço

<bean:write name=“bean” property=“descrprod”/>

[color=red] <html:text property=“qtd” size=“13” maxlength=“13”/> [/color]

<bean:write name=“bean” property=“preco”/>

<html:submit property=“submit”>
<bean:message key=“button.save”/>
</html:submit>


</logic:present>
</html:form>

O <html:text property=“qtd” size=“13” maxlength=“13”/> se repete por várias vezes quando o jsp é estanciado ele me traz por exemplo 10 vezes para que eu digite os valores de quantidade de cada item, isto ele faz o probelma está na hora em que eu submito a página e tento recuperar os valores pois o <html:text property=“qtd” size=“13” maxlength=“13”/> está com o mesmo nome então eu não consigo recuperar os valore só consigo recuperar o valor do primeiro item e na verdade eu preciso recuperar os valores que foram digitados no campo quatidade de cada itens.

Teria como fazer isto com struts ?

Ficou claro ?

Grato

Segue tambem meu action

package org.apache.struts.webapp.validator;

import java.util.*;

import java.util.Locale;

import javax.servlet.http.HttpSession;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.util.MessageResources;

import org.apache.struts.webapp.validator.ConprodForm;

import dao.ProdutoAO;
public final class ConsProdAction extends Action {

private Log log = LogFactory.getFactory().getInstance(this.getClass().getName());

public ActionForward execute(ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws Exception {
// Extract attributes we will need
HttpSession session = request.getSession();
Locale locale = getLocale(request);
MessageResources messages = getResources(request);
ConprodForm info = (ConprodForm)form;
String action = request.getParameter("action");
info.setCodigoCli(request.getParameter("codigo"));


System.out.println("campo qtd " + request.getParameter("qtd"));


return mapping.findForward("success");        

}

}

3 Respostas

P

Voce vai precisar criar uma Lista para recuperar estes dados do formularios em sua ActionForm,

por exemplo

....
 private ArrayList servicos;
...


public ArrayList getServicos() {
        return servicos;
    }

    public void setServicos(ArrayList servicos) {
        this.servicos = servicos;
    }

ae voce trata isso na sua action

L

De uma procurada por DynamicForm ou entao tem o Struts-Layout

http://struts.application-servers.com/

[]s
Lucas Balensiefer

debersom

Você vai precisar criar no seu form um atributo Map e além de criar o get e set para ele você deve criar dois outros metodos para incluir um valor nele.
Exemplo:

Map mapValores = new HashMap();

public String getValores(String key) { 
    return (String) this.mapValores.get(key);
}

public void setValores(String key, String valor) {
        this.mapValores.put(key, valor);
}

public Map getMapValores() {
    return mapValores;
}

public void setMapValores(Map mapValores) {
    this.mapValores = mapValores;
}

Depois é só usar na sua JSP, onde o valor dentro dos parenteses deve ser utilizado de forma que você sabia como recuperá-los de novo em sua action

&lt;input type="text" name="setValores(&lt;bean:write name='objeto' property='id'/&gt;)" &gt;

No link abaixo tem mais informações, de uma olhada no item 4.3.2, “Map-backed ActionForms”.
http://struts.apache.org/userGuide/building_controller.html

Espero ter ajudado.

Abraços

Criado 16 de junho de 2005
Ultima resposta 17 de jun. de 2005
Respostas 3
Participantes 4