1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Envio de List de um Form para um Controller usando VRaptor

Boa Tarde,

Tenho um formulário que recebe uma lista de objetos "produto" do metodo/Controller "novo". Nesse formulário, devo percorrer esses objetos para que o usuário possa modificar o campo "status" usando um enum de opções "sim" e "nao". Quando o usuário der o submit no form, minha action deve mandar essa lista de produtos com os produtos já modificados pelo usuário para a controller "salva". Para então eu modificar na base. Porém, no método/controller "salva", minha lista chega null.

Os métodos/Controllers:

public void novo() {
    List<Requisito> requisitoList = requisitoDao.lista();
    List<Produto> produtoList = new ArrayList<Produto>();

    for (Requisito requisito : requisitoList) {
        Produto produto = new produto();
        produto.setRequisito(requisito);
        produto.setStatus(SimNao.N);
        produto.setProprietario(proprietarioWeb.get());

        produtoList.add(produto);
    }

    SimNao[] simNaos = SimNao.values();

    result.include("produtoList", produtoList);
    result.include("simNaos", simNaos);
}

public void salva(List<Produto> produtoList) {

    for(Produto produto : produtoList){
        dao.atualiza(produto);
    }
    result.redirectTo(PainelController.class).painel();
}

Form da Jsp "novo":

<form role="form" action="<c:url value="/produto/altera"/>" method="post">
    <table>
        <c:forEach var="produto" items="${produtoList}">

            <input type="hidden" name="produto.id" value="${produto.id}">
            <input type="hidden" name="produto.requisito.id" value="${produto.requisito.id}">

            <tr>
                <td>${produto.requisito.desc_requisitos}</td>    
                <td>
                    <select  id="status" name="produto.status">
                        <c:forEach var="simNao" items="${simNaos}">
                            <option value="${simNao}">${simNao}</option>
                        </c:forEach>
                    </select>
                </td>
            </tr>

        </c:forEach>                
    </table>

    <div>
        <input class="btn btn-success" type="submit" value="Salvar" />
    </div>
</form>

A Model de "Produto":

@Entity
public class Produto{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @OneToOne
    private Requisito requisito;

    @Enumerated(EnumType.STRING)
    private SimNao status;

    @ManyToOne
    private Proprietario proprietario;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Requisito getRequisito() {
        return requisito;
    }

    public void setRequisito(Requisito requisito) {
        this.requisito = requisito;
    }

    public SimNao getStatus() {
        return status;
    }

    public void setStatus(SimNao status) {
        this.status = status;
    }

    public Proprietario getProprietario() {
        return proprietario;
    }

    public void setProprietario(Proprietario proprietario) {
        this.proprietario = proprietario;
    }
}

Por que a lista de Produtos está chegando null no método salva?

Obrigado!! :D

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags vraptor jsp ou faça a sua própria pergunta.