Versão atual:

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

Versão(1):

Ver a versão formatada

Envio de List de um Form para um Controller usando VRaptor

Comentário

new question