Fazer button deletar dado de uma tabela em JSP

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]












<c:forEach items="${menu}" var=“menu”>




            <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 …

Nome Situacao Data Criacao Acoes
${menu.nome} ${menu.situacao} <fmt:formatDate pattern=“dd/MM/yyyy” value="${menu.dataCriacao}" />

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]












<c:forEach items="${menu}" var=“menu”>




            <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 ?

Nome Situacao Data Criacao Acoes
${menu.nome} ${menu.situacao} <fmt:formatDate pattern=“dd/MM/yyyy” value="${menu.dataCriacao}" />

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]












<c:forEach items="${menu}" var=“menu”>




            <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

Nome Situacao Data Criacao Acoes
${menu.nome} ${menu.situacao} <fmt:formatDate pattern=“dd/MM/yyyy” value="${menu.dataCriacao}" />

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>