Será que é esse seu foreach??
<c:forEach items= "${tipos }" var = "tipoPreco" varStatus= "status"> </c:forEach>
Você abriu e fechou o forEach sem nada dentro e depois chamou a div que teoricamente utilizaria os dados do forEach.
Tente algo parecido com:
<c:forEach items= "${tipos }" var = "tipoPreco" varStatus= "status">
<label>${tipoPreco }</label>
<input type="text" name="precos[${status.index }].valor" />
<input type= "hidden" name= "precos[${status.index }].tipo" value= "${tipoPreco }">
</c:forEach>
Outra coisa que ia te perguntar é por qual motivo você está fazendo o acesso direto ao endereço "/produtos". Teoricamente essa página só serviria para salvar o produto.
Para cadastrar seria em "/produtos/form" e para visualizar a mensagem de sucesso seria "/produtos/ok"