2010-11-06 10 views
0

J'ai une page simple avec une table et je veux qu'elle soit triable, donc j'ai jquery et tablesorter. Heres ma page:jQuery Tablesorter ne fonctionnera pas sur JSP

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <link rel="stylesheet" type="text/css" href="/css/base.css"/> 
    <script src="/javascript/jquery-1.4.3.js" type="text/javascript"></script> 
    <script src="/javascript/jquery.tablesorter.js" type="text/javascript"></script> 
    <title>JSP Page</title> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("#tabela").tableSorter(); 
     }); 
    </script> 
</head> 

<body>   
    <p> 
     <label><h3>Lista de Personagens</h3></label> 
    </p> 
    <p> 
     <a href="inserir.htm">Novo Personagem</a> 
    </p> 
    <table id="tabela" border="1" cellspacing="0" cellpadding="0"> 
     <tr> 
      <th>Codigo</th> 
      <th>Nome</th> 
      <th>Classe</th> 
      <th colspan="3">Opções</th> 
     </tr> 
     <c:forEach items="${lista}" var="p"> 
      <tr> 
       <td>${p.id}</td> 
       <td>${p.nome}</td> 
       <td>${p.classe}</td> 
      <form id="formAlterar${p.id}" method="get" action="alterar.htm"> 
       <td> 
        <input type="hidden" name="id" value="${p.id}" /> 
        <a href="#" onclick="document.getElementById('formAlterar${p.id}').submit()">Alterar</a> 
       </td> 
      </form> 
      <form id="formConsultar${p.id}" method="post" action="consultar.htm"> 
       <td> 
        <input type="hidden" name="id" value="${p.id}" /> 
        <a href="#" onclick="document.getElementById('formConsultar${p.id}').submit()">Consultar</a> 
       </td> 
      </form> 
      <form id="formExcluir${p.id}" method="post" action="excluir.htm"> 
       <td> 
        <input type="hidden" name="id" value="${p.id}" /> 
        <a href="#" onclick="document.getElementById('formExcluir${p.id}').submit()">Excluir</a> 
       </td> 
      </form> 
     </tr> 
    </c:forEach> 
</table> 

Je le dossier javascript au même niveau que WEB-INF. Je pense que j'ai pointé au bon endroit. mais quand je charge la page, rien ne se passe, les statistiques de la table sont fixes, pas de tri. Est-ce que cela peut être lié au fait que j'utilise Spring MVC et que le mapping indique le mauvais emplacement? Heres ma méthode cartographié:

@RequestMapping("/personagem/index.htm") 
public ModelAndView listar(@RequestParam(value = "mensagem", required = false) String mensagem) { 
    ArrayList<Personagem> lista = getPersonagemService().listarTodos(); 
    return new ModelAndView("listar", "lista", lista); 
} 

Edit: Le code HTML généré (il est un peu long, donc je couper la partie à répéter):

<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <link rel="stylesheet" type="text/css" href="/css/base.css"/> 
    <script src="/javascript/jquery-1.4.3.js" type="text/javascript"></script> 
    <script src="/javascript/jquery.tablesorter.js" type="text/javascript"></script> 
    <title>JSP Page</title> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("#tabela").tableSorter(); 
     }); 
    </script> 
</head> 

<body>   
    <p> 
     <label><h3>Lista de Personagens</h3></label> 
    </p> 
    <p> 
     <a href="inserir.htm">Novo Personagem</a> 
    </p> 
    <table id="tabela" border="1" cellspacing="0" cellpadding="0"> 
     <tr> 
      <th align="center">Nome</th> 
      <th align="center">Classe</th> 
      <th width="250" colspan="3">Opções</th> 
     </tr> 

      <tr> 
       <td width="150" align="center">Melys</td> 
       <td width="150" align="center">Priest</td> 
      <form id="formAlterar4" method="get" action="alterar.htm"> 
       <td align="center"> 
        <input type="hidden" name="id" value="4" /> 
        <a href="#" onclick="document.getElementById('formAlterar4').submit()">Alterar</a> 
       </td> 
      </form> 
      <form id="formConsultar4" method="post" action="consultar.htm"> 
       <td align="center"> 
        <input type="hidden" name="id" value="4" /> 
        <a href="#" onclick="document.getElementById('formConsultar4').submit()">Consultar</a> 
       </td> 
      </form> 
      <form id="formExcluir4" method="post" action="excluir.htm"> 
       <td align="center"> 
        <input type="hidden" name="id" value="4" /> 
        <a href="#" onclick="document.getElementById('formExcluir4').submit()">Excluir</a> 
       </td> 
      </form> 
     </tr> 
+0

Pourrions-nous voir le code HTML généré? Votre page est-elle capable de charger les fichiers JS? –

+0

Je ne sais pas, ill poster le html – onildo

+0

Je viens d'éditer et ajouté le code HTML – onildo

Répondre

1

Avez-vous confirmé que les ressources suivantes sont bien servis ? (Par exemple, ils ne sont pas 404, ils sont le type de contenu correct, etc.)

  • /css/base.css
  • /javascript/jquery-1.4.3.js
  • /javascript/jquery.tablesorter.js

Si oui, avez-vous utilisé quelque chose comme l'erreur Firefox Console pour assurer qu'il n'y a pas d'erreurs JavaScript dans votre code?

En outre, pourquoi intégrez-vous des formulaires dans votre tableau qui semblent simplement liés à une page avec un ID? En d'autres termes, pourquoi ne pas simplement créer un lien vers la page?

+0

J'ai vérifié avec la console d'erreur et le seul erro i get est '$ is not defined' – onildo

+0

J'ai changé la référence de base jQuery à la version distante, et il a cessé de montrer cette erreur. Les problèmes restent toujours parce que le tablesorter est local. Je ne peux pas trouver le bon chemin local. – onildo

+0

Ainsi, il semble que les trois ressources ne soient pas correctement servies. Ceci explique le message d'erreur que vous receviez et pourquoi il est parti lorsque vous vous êtes connecté à une copie distante de jQuery. Je ne suis pas familier avec Spring MVC, donc vous pouvez consulter la documentation pour servir les ressources statiques. –