我正在处理一个Web项目,我使用tile在一个jsp中有多个jsp。
我遇到了TilesIOException
的问题。
我有一个名为:mainpage.jsp的jsp,它包含了标题,正文和页脚的所有jsp' s。 我的身体也应该包含一些其他的jsp,因此我也试图在那里使用瓷砖而没有运气。
这里是tile中的结构和xml代码。
mainpage.jsp
----header.jsp
----body.jsp(mainpageBody.jsp)
--------bodybox1.jsp
--------bodybox2.jsp
--------bodybox3.jsp
--------bodybox4.jsp
----footer.jsp
tiles.xml:
<definition name="mainpage" extends="mainpageLayout">
<put-attribute name="title" value="Welcome" />
<put-attribute name="body" value="/mainpage/mainpageBody.jsp" />
<put-attribute name="mainbox0" value="/bodybox1.jsp" />
<put-attribute name="mainbox1" value="/bodybox2.jsp" />
<put-attribute name="mainbox2" value="/bodybox3.jsp" />
<put-attribute name="mainbox3" value="/bodybox4.jsp" />
</definition>
<definition name="mainpageLayout" template="/mainpage.jsp">
<put-attribute name="title" value="Template" />
<put-attribute name="header" value="/mainpage/header.jsp" />
<put-attribute name="body" value="/mainpage/body.jsp" />
<put-attribute name="footer" value="/mainpage/footer.jsp" />
</definition>
她是我的mainpageBody.jsp:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ page import="java.text.*,java.util.*"%>
<script type="text/javascript">
function showRegisterUserPage() {
$(".frontpageBodyContent").load("showRegisterPageRegisterAction");
}
</script>
<div class="frontpageBodyContent">
<div id="frontPageContentDiv">
<table border="0" style="width:100%">
<tbody>
<tr>
<td>
<div id="bodybox1">
<tiles:insertAttribute name="bodybox1" />
</div>
</td>
<td>
<div id="bodybox2">
<tiles:insertAttribute name="bodybox2" />
</div>
</td>
</tr>
<tr>
<td>
<div id="bodybox3">
<tiles:insertAttribute name="bodybox3" />
</div>
</td>
<td>
<div id="bodybox4">
<tiles:insertAttribute name="bodybox4" />
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
WEB-INF文件夹包含:lib文件夹,tiles.xml&amp; web.xml中。 lib文件夹不包含任何内容。
struts.xml中:
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.enable.SlashesInActionNames" value="true"/>
<constant name="struts.action.extension" value=",action"/>
<package name="default" extends="struts-default">
<result-types>
<result-type name="tiles"
class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name="*MainAction" method="{1}" class="com.x.web.action.MainAction">
<result name="mainpage" type="tiles">mainpage</result>
<result name="success">index.jsp</result>
</action>
<action name="*RegisterAction" method="{1}" class="com.x.web.action.RegisterAction">
<result name="registeruserpage" type="tiles">registeruserpage</result>
<result name="redirect" type="redirect">${redirectUrl}</result>
</action>
<action name="registrering" method="showRegisterUserPage" class="com.x.web.action.RegisterAction">
<result name="registeruserpage" type="tiles">registeruserpage</result>
</action>
</package>
的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:javaee="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<javaee:display-name>X</javaee:display-name>
<context-param>
<javaee:param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
</javaee:param-name>
<javaee:param-value>/WEB-INF/tiles.xml</javaee:param-value>
</context-param>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<javaee:listener-class>org.apache.struts2.tiles.StrutsTilesListener
</javaee:listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
我得到例外:
org.apache.tiles.TilesException
:
ServletException including path '/templates/mainpage.jsp'.
org.apache.tiles.util.TilesIOException: JSPException including path '/content/mainpage/mainpageBody.jsp'.
org.apache.tiles.TilesException: Attribute 'bodybox1' not found.
我做错了什么? 非常感谢帮助,感谢提前!
答案 0 :(得分:0)
试试这个web.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>X</display-name>
<listener>
<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>
<context-param>
<param-name>tilesDefinitions</param-name>
<param-value>/WEB-INF/tiles.xml</param-value>
</context-param>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
并检查tiles.xml
文件夹中的WEB-INF
。