Antes de mais nada gostaria de informar que estou me baseando em um exemplo do Washington Botelho por isso alguns campos ainda estão com o mesmo nome do exemplo. http://www.wbotelhos.com/manipulando-listas-com-jquery-e-vraptor-3
Estou querendo criar um formulário a qual ele permita a inserção de listas e sublistas. No meu caso de uso a pessoa poderá cadastrar a refeição e dizer quais alimentos essa refeição terá. Estou tendo dificuldade em ordenar esses dados e ate mesmo criar os campos.
[code]
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
<form action="${pageContext.request.contextPath}/filme" method=“post”>
<c:if test="${filme != null && filme.id != null}">
<input type=“hidden” name=“filme.id” value="${filme.id}" />
</c:if>
<fieldset id="artista-container" style="width: 300px;">
<legend>
Alimentos
<img />
</legend>
<c:forEach items="${filme.artistas}" var="artista" varStatus="status">
<div class="artista">
<label>Nome:</label>
<input type="text" name="filme.artistas[${status.index}].nome" value="${artista.nome}" />
<input type="hidden" name="filme.artistas[${status.index}].id" value="${artista.id}" />
<img />
</div>
</c:forEach>
</fieldset><br/>
<input type="submit" value="Salvar" />
</form>
<script type=“text/javascript”>
var campo =
’<div class=“artista”>’ +
’<label>Nome:</label>’ +
’<input type=“text” name=“filme.artistas[0].nome” />’ +
'<img />' +
'</div>';
var model =
'<fieldset id="artista-container" style="width: 300px;">'+
'<legend>Refeição</legend>'+
'<label>Alimento:</label>'+
'<input type="text" name="filme.titulo" value="${filme.titulo}" /><img />'+
'<img />'+
'</fieldset>';
$('.button-remover').live('click', function() {
$(this).parent().remove();
reorderIndexes();
});
function clona() {
$('#artista-container').append(model);
};
function adicionar() {
$('#artista-container').append(campo);
};
function reorderIndexes() {
var regex = /\[[0-9]\]/g;
$('.artista').each(function(index) {
var $campos = $(this).find('input'),
$input ,
name ;
$campos.each(function() {
$input = $(this),
name = $input.attr('name');
$input.attr('name', name.replace(regex, '[' + index + ']'));
});
});
};
</script>[/code]