2010-11-08 24 views
1

J'essaie d'obtenir des carreaux 2 qui fonctionnent avec JSP. J'obtiens une exception de pointeur nul. J'ai du mal à trouver une bonne documentation qui explique comment obtenir l'installation. J'ai un cas d'utilisation assez facile. J'ai un modèle avec un attribut appelé "contenu". J'essaie alors d'utiliser le template en insérant un jsp dans l'attribut "content". Je ne suis pas sûr si j'ai besoin de mettre quelque chose dans mon fichier web.xml? J'ai collé mon modèle et le fichier jsp qui essaie d'utiliser le modèle.Problèmes avec les carreaux Apache 2 et JSP

Voici le modèle:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@taglib uri="http://tiles.apache.org/tags-tiles" prefix="template" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

     <link rel="stylesheet" href="${pageContext.request.contextPath}/css/jquery-ui-1.8.5.custom.css" type="text/css" /> 
     <link rel="stylesheet" href="${pageContext.request.contextPath}/css/app.css" type="text/css" /> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js" type="text/javascript"></script> 
     <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js" type="text/javascript"></script> 
     <title>Cheetah Home</title> 
    </head> 
    <body> 
     <div id="wrapper"> 
      <jsp:include page="${pageContext.request.contextPath}/jsp/layout/top.jsp"></jsp:include> 
      <template:insertAttribute name="content"></template:insertAttribute> 
     </div> 
    </body> 
</html> 

Voici une page essaie d'utiliser le modèle:

<%@taglib uri="http://tiles.apache.org/tags-tiles" prefix="template" %> 

<template:insertTemplate template="/templates/homeTemplate.jsp"> 
    <template:putAttribute name="content" value="test.jsp"> 
    </template:putAttribute> 
</template:insertTemplate> 

J'utilise Maven pour construire l'application, et j'ai les dépendances suivantes spécifiées :

<dependency> 
     <groupId>org.apache.tiles</groupId> 
     <artifactId>tiles-servlet</artifactId> 
     <version>2.2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tiles</groupId> 
     <artifactId>tiles-template</artifactId> 
     <version>2.2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tiles</groupId> 
     <artifactId>tiles-jsp</artifactId> 
     <version>2.2.2</version> 
    </dependency> 

Tout se construit bien, mais quand je lance l'application, je reçois:

javax.servlet.ServletException: com.sun.jersey.api.container.ContainerException: org.apache.jasper.JasperException: java.lang.NullPointerException 

Quelqu'un at-il des idées sur comment faire fonctionner cela?

Merci!

Répondre

2

Il y a une certaine configuration que vous devez faire pour que Tiles 2 fonctionne. La documentation (http://tiles.apache.org/tutorial/configuration.html) indique que vous pouvez configurer web.xml pour qu'il contienne une servlet de démarrage, un écouteur ou un filtre. J'ai essayé l'auditeur et ça n'a pas marché pour moi. Cependant, le filtre a fait. Un autre problème que j'ai rencontré est que vous devez spécifier une implémentation SLF4J telle que Log4J. Veillez également à ce que lorsque vous ajoutez des dépendances maven pour les tuiles, cela vous donnera l'API SLF4J. Vous devez vous assurer que l'implémentation que vous spécifiez dans maven correspond à la version de l'API que les tuiles ont ajoutée pour vous en tant que dépendance, ou que vous rencontrerez des erreurs amusantes si vous ne le faites pas.

0

Je reçois la même erreur, mais elle ne l'a résolu qu'en spécifiant une implémentation SLF4J. Servlet travaille pour moi.