我正在尝试使用JSP处理tile 2。我得到一个空指针异常。我找不到解释如何设置的好文档。我有一个非常简单的用例。我有一个名为“content”的属性模板。然后我通过在“content”属性中插入一个jsp来尝试使用该模板。我不确定我是否需要在web.xml文件中设置任何内容?我已经粘贴了我的模板和试图使用该模板的jsp。
以下是模板:
<%@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>
这是一个试图使用模板的页面:
<%@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>
我正在使用Maven构建应用程序,并且我指定了以下依赖项:
<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>
一切都很好,但是当我运行应用程序时,我得到了:
javax.servlet.ServletException: com.sun.jersey.api.container.ContainerException: org.apache.jasper.JasperException: java.lang.NullPointerException
任何人对如何使其发挥作用有任何想法?
谢谢!
答案 0 :(得分:2)
您必须执行一些配置才能使Tiles 2正常工作。文档(http://tiles.apache.org/tutorial/configuration.html)表示您可以将web.xml配置为包含启动servlet,侦听器或过滤器。我尝试了听众,它对我不起作用。但是,过滤器确实如此。
<filter>
<filter-name>Tiles Filter</filter-name>
<filter-class>org.apache.tiles.web.startup.TilesFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Tiles Filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
我遇到的另一个问题是您需要指定一个SLF4J实现,例如Log4J。另外要注意,当你为tile添加maven依赖项时,它会为你获得SLF4J api。您需要确保您在maven中指定的实现与作为依赖项为您添加的tile的版本匹配,否则如果不这样做,您将遇到一些有趣的错误。
答案 1 :(得分:0)
我得到了同样的错误,但只有通过指定SLF4J实现才能解决。 Servlet适合我。