Bom dia, eu não estou conseguindo fazer o button deletar um dado de uma tabela que está dentro de um form em um .jsp
Button:
<a href="${pageContext.request.contextPath}/admin/menus/${menu.id}" method="delete" > <input type="hidden" value="delete"/>
<button class="btn btn-small" rel="tooltip" data-placement="botton" data-original-title="Deletar" type="submit" onclick="return confirm('Deseja mesmo excluir?')" ><i class="gicon-remove-circle" ></i></button>
</a>
que está dentro desse form:
[code]
|
Nome |
Situacao |
Data Criacao |
Acoes |
<c:forEach items="${menu}" var=“menu”>
|
${menu.nome} |
${menu.situacao} |
<fmt:formatDate pattern=“dd/MM/yyyy” value="${menu.dataCriacao}" /> |
<td class="ms">
<div class="btn-group1">
<a href="${pageContext.request.contextPath}/admin/menus/${menu.id}/edit" class="btn btn-small" rel="tooltip" data-placement="left" data-original-title="Editar"><i class="gicon-edit"></i></a>
<a href="${pageContext.request.contextPath}/admin/menus/${menu.id}" class="btn btn-small" rel="tooltip" data-placement="top" data-original-title="View"><i class="gicon-eye-open"></i></a>
<a href="${pageContext.request.contextPath}/admin/menus/${menu.id}" method="delete" > <input type="hidden" value="delete"/>
<button class="btn btn-small" rel="tooltip" data-placement="botton" data-original-title="Deletar" type="submit" onclick="return confirm('Deseja mesmo excluir?')" ><i class="gicon-remove-circle" ></i></button>
</a>
</div>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</form>[/code]
e controller pra deletar que esta num .java:
@Delete("/menus/{menu.id}")
@RestritoAdmin
public void destroy(Menu menu) {
repository.destroy(repository.find(menu.getId()));
result.forwardTo("/WEB-INF/jsp/admin/menu/index.jsp");
}
sou meio novato nisso, então alguem saberia me dizer onde ou o que eu fiz de errado ???
ah, estou usando o vraptor …
primeiro:
<form method="" action="" name="frm"> //tirar esse form
<table id="datatable_example" class="responsive table table-striped table-bordered" style="width:100%;margin-bottom:0; ">
<thead>
<tr>
<th class="jv no_sort"><label><center><input type="checkbox" name="allCheck" onClick="selectallMe()"></center></label></th>
<th class="">Nome</th>
<th class="to_hide_phone ue no_sort">Situacao</th>
<th class="">Data Criacao</th>
<th class="ms no_sort ">Acoes</th>
</tr>
</thead>
<tbody>
<c:forEach items="${menu}" var="menu">
<tr>
<td><label><center><input type="checkbox" name="chkName" onClick="selectall()" value="${menu.id}"></center></label></td>
<td class="">${menu.nome}</td>
<td class="to_hide_phone">${menu.situacao}</td>
<td><fmt:formatDate pattern="dd/MM/yyyy" value="${menu.dataCriacao}" /></td>
<td class="ms">
<div class="btn-group1">
<a href="${pageContext.request.contextPath}/admin/menus/${menu.id}/edit" class="btn btn-small" rel="tooltip" data-placement="left" data-original-title="Editar"><i class="gicon-edit"></i></a>
<a href="${pageContext.request.contextPath}/admin/menus/${menu.id}" class="btn btn-small" rel="tooltip" data-placement="top" data-original-title="View"><i class="gicon-eye-open"></i></a>
<a href="${pageContext.request.contextPath}/admin/menus/${menu.id}" method="delete" > <input type="hidden" value="delete"/>
<button class="btn btn-small" rel="tooltip" data-placement="botton" data-original-title="Deletar" type="submit" onclick="return confirm('Deseja mesmo excluir?')" ><i class="gicon-remove-circle" ></i></button>
</a>
</div>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</form> //tirar esse forme
tira esse form em volta da tabela
agora vc tem duas opções
primeira opção
<a href="${pageContext.request.contextPath}/admin/menus/${menu.id}" method="delete" > <input type="hidden" value="delete"/>
<button class="btn btn-small" rel="tooltip" data-placement="botton" data-original-title="Deletar" type="submit" onclick="return confirm('Deseja mesmo excluir?')" ><i class="gicon-remove-circle" ></i></button>
</a>
tira esse a e colocar o form no lugar
ficando assim
<form method="post" action="${pageContext.request.contextPath}/admin/menus/${menu.id}">
<input type="hidden" value="delete"/>
<button class="btn btn-small" rel="tooltip" data-placement="botton" data-original-title="Deletar" type="submit" onclick="return confirm('Deseja mesmo excluir?')" >
<i class="gicon-remove-circle" ></i></button>
</form>
a segunda opção é
tira o e deixando apenas o button e no onclick chame uma função que vc ira criar e passe o id como parametro da função
na função vc vai fazer isso:
function deletar(idMenu){
if(confirm('Deseja mesmo excluir?')){
$('#idMenuExcluir').val(idMenu); // vai setar o valor no input de id "idMenuExcluir"
$('#formExcluirMenu').submit();
}
}
e vc vai criar tambem o form fora da tabela
<form method="post" action="${pageContext.request.contextPath}/admin/menus/" id="formExcluirMenu">
<input type="hidden" value="delete" />// acho que aqui vc precisa colocar o name tambem
<input type="hidden" name="menu.id" id="idMenuExcluir" />
</form>
vê se isso ajuda
Obrigado pela ajuda, mas ele está chamando a função certo, mas ainda não está excluindo … a função e o form fora da tabela deixei conforme voc me passou, e no button deixei assim:
ou seja, ficou assim:
[code]
|
Nome |
Situacao |
Data Criacao |
Acoes |
<c:forEach items="${menu}" var=“menu”>
|
${menu.nome} |
${menu.situacao} |
<fmt:formatDate pattern=“dd/MM/yyyy” value="${menu.dataCriacao}" /> |
<td class="ms">
<div class="btn-group1">
<a href="${pageContext.request.contextPath}/admin/menus/${menu.id}/edit" class="btn btn-small" rel="tooltip" data-placement="left" data-original-title="Editar"><i class="gicon-edit"></i></a>
<a href="${pageContext.request.contextPath}/admin/menus/${menu.id}" class="btn btn-small" rel="tooltip" data-placement="top" data-original-title="View"><i class="gicon-eye-open"></i></a>
<button class="btn btn-small" rel="tooltip" data-placement="botton" type="submit" onclick="deletar()" ><i class="gicon-remove-circle" ></i></button>
</div>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</form>
<form method="post" action="${pageContext.request.contextPath}/admin/menus/" id="formExcluirMenu">
<input type="hidden" value="delete" />
<input type="hidden" name="menu.id" id="idMenuExcluir" />
</form>[/code]
e precisa mesmo tirar o form em volta da tabela ?? é que sem ele a função para selecionar/de-selecionar todos os checkbox não funciona … mas a respeito do que voc me passou, fiz algo de errado ?
Por favor, ao abrir tópicos, dê um título descritivo. 99% dos tópicos são um pedido de ajuda, não adianta nada colocar no título “Ajuda!!”
[quote=F.Engel]Obrigado pela ajuda, mas ele está chamando a função certo, mas ainda não está excluindo … a função e o form fora da tabela deixei conforme voc me passou, e no button deixei assim:
ou seja, ficou assim:
[code]
|
Nome |
Situacao |
Data Criacao |
Acoes |
<c:forEach items="${menu}" var=“menu”>
|
${menu.nome} |
${menu.situacao} |
<fmt:formatDate pattern=“dd/MM/yyyy” value="${menu.dataCriacao}" /> |
<td class="ms">
<div class="btn-group1">
<a href="${pageContext.request.contextPath}/admin/menus/${menu.id}/edit" class="btn btn-small" rel="tooltip" data-placement="left" data-original-title="Editar"><i class="gicon-edit"></i></a>
<a href="${pageContext.request.contextPath}/admin/menus/${menu.id}" class="btn btn-small" rel="tooltip" data-placement="top" data-original-title="View"><i class="gicon-eye-open"></i></a>
<button class="btn btn-small" rel="tooltip" data-placement="botton" type="submit" onclick="deletar()" ><i class="gicon-remove-circle" ></i></button>
</div>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</form>
<form method="post" action="${pageContext.request.contextPath}/admin/menus/" id="formExcluirMenu">
<input type="hidden" value="delete" />
<input type="hidden" name="menu.id" id="idMenuExcluir" />
</form>[/code]
e precisa mesmo tirar o form em volta da tabela ?? é que sem ele a função para selecionar/de-selecionar todos os checkbox não funciona … mas a respeito do que voc me passou, fiz algo de errado ?[/quote]
falta vc passar o id do menu na função
esses são os meus controllers:[code]@Get("/menus")
@RestritoAdmin
public void index() {
result.include(“menu”, repository.findAll());
result.forwardTo("/WEB-INF/jsp/admin/menu/index.jsp");
}
@Post("/menus")
@RestritoAdmin
public void create(Menu menu) {
validator.validate(menu);
menu.setDataCriacao(new Date());
validator.onErrorUsePageOf(this).newMenu();
repository.create(menu);
result.redirectTo(this).index();
}
@Get("/menus/new")
@RestritoAdmin
public void newMenu() {
result.forwardTo("/WEB-INF/jsp/admin/menu/newMenu.jsp");
}
@Put("/menus")
@RestritoAdmin
public void update(Menu menu) {
menu.setDataAtualizacao(new Date());
validator.validate(menu);
validator.onErrorUsePageOf(this).edit(menu);
repository.update(menu);
result.forwardTo("/WEB-INF/jsp/admin/menu/index.jsp");
}
@Get("/menus/{menu.id}/edit")
@RestritoAdmin
public void edit(Menu menu) {
result.include("menu",repository.find(menu.getId()));
result.forwardTo("/WEB-INF/jsp/admin/menu/edit.jsp");
}
@Get("/menus/{menu.id}")
@RestritoAdmin
public void show(Menu menu) {
result.include("menu",repository.find(menu.getId()));
result.forwardTo("/WEB-INF/jsp/admin/menu/show.jsp");
}
@Delete("/menus/{menu.id}")
@RestritoAdmin
public void destroy(Menu menu) {
repository.destroy(repository.find(menu.getId()));
result.forwardTo("/WEB-INF/jsp/admin/menu/index.jsp");
}[/code] e nesse form que voc me pediu pra colocar:[code]<form action="${pageContext.request.contextPath}/admin/menus/" method="post" id="formExcluirMenu">
<input type="hidden" value="delete" />
<input type="hidden" name="menu.id" id="idMenuExcluir" value=""/>
</form>[/code] ele está chamando o metodo 'index', por isso não tá deletando ... sabe como resolver ?
altera isso
<form action="${pageContext.request.contextPath}/admin/menus/" method="post" id="formExcluirMenu">
<input type="hidden" value="delete" />
<input type="hidden" name="menu.id" id="idMenuExcluir" value=""/>
</form>
pra isso:
<form action="${pageContext.request.contextPath}/admin/menus/" method="post" id="formExcluirMenu">
<input type="hidden" name="_method" value="DELETE" />
<input type="hidden" name="menu.id" id="idMenuExcluir" value=""/>
</form>