瓷砖 - "属性' x'找不到"

时间:2014-05-07 06:50:04

标签: java xml jsp struts2 tiles

我正在处理一个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.

我做错了什么? 非常感谢帮助,感谢提前!

1 个答案:

答案 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