apache tile在struts2中无法正确呈现(显示纯文本)

时间:2013-07-29 09:39:30

标签: html struts2 tiles

我正在使用一个struts2 web应用程序,我正在使用Apache tiles2框架。             代码在localhost上工作正常,但是当我在服务器上启动代码时,它会将平铺页面呈现为纯文本。任何人都可以告诉我问题出在哪里。 我的意思是说该页面在浏览器端显示为纯文本。

这是在浏览器中呈现的方式..屏幕截图 - http://i42.tinypic.com/2vnj686.jpg

如果有人有解决方案,请帮助我......

这是我的tiles.xml

    <?xml version="1.0" encoding="UTF-8" ?>

    <!DOCTYPE tiles-definitions PUBLIC
           "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
           "http://tiles.apache.org/dtds/tiles-config_2_1.dtd"  >
    <!--        "http://tiles.apache.org/dtds/tiles-config_2_1.dtd" -->
    <tiles-definitions>

        <definition name="BaseDef" template="/adminpanel/template/BaseLayout.jsp">

            <put-attribute name="title" value="Home Page" />
            <put-attribute name="css" value="/adminpanel/template/extracss.jsp" />
            <put-attribute name="js" value="/adminpanel/template/js.jsp" />
            <put-attribute name="header" value="/adminpanel/template/header.jsp" />
            <put-attribute name="body" value="/adminpanel/template/body.jsp" />
            <put-attribute name="footer" value="/adminpanel/template/footer.jsp" />

    </definition>

        <definition name="LatestMaterial" extends="BaseDef">
            <put-attribute name="title" value="Latest Exam Material " />
            <put-attribute name="css" value="/adminpanel/template/newtablecss2.jsp" />              
            <put-attribute name="body" value="/adminpanel/Pages/latestexammaterial.jsp" />
            </definition>
    </tiles-definitions>

这是我的BaseLayout.jsp

        <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
            pageEncoding="ISO-8859-1"%>
        <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
        <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

        <html xmlns="http://www.w3.org/1999/xhtml">
        <head>

        <tiles:insertAttribute name="css"/>
        <tiles:insertAttribute name="js"/>
         <title><tiles:insertAttribute name="title" /></title>
        </head>
        <body>

            <div id="main">
                        <tiles:insertAttribute name="header"/>
                                        <div id="body">
                                                 <tiles:insertAttribute name="body"/>
                                        </div></div>
                        <tiles:insertAttribute name="footer"/>

        </body>
        </html>

这就是我在struts.xml中使用它的方式

   <package name="wz.admin"  extends="struts-default,json-default,tiles-default">
      <action name="LatestMaterial" class="org.wz.admin.LatestMaterialAction">
        <result type="tiles">LatestMaterial</result>
    </action>
    </package>

1 个答案:

答案 0 :(得分:0)

我仔细检查了你的代码,我认为问题是你的struts.xml,因为一切似乎都很好。我不确定100%,但尝试将struts.xml更改为:

    <package name="wz.admin" extends="struts-default" namespace="/">
        <result-types>
            <result-type name="tiles"
                class="org.apache.struts2.views.tiles.TilesResult" />
        </result-types>
        <action name="LatestMaterial" class="org.wz.admin.LatestMaterialAction">
            <result type="tiles">LatestMaterial</result>
        </action>
    </package>

此外,即使success结果是默认结果,您也应该为结果命名,以避免在管理多个结果时出现误导:

    <result name="success" type="tiles">LatestMaterial</result>

这只是我在使用struts时给我的建筑师的一个建议。最后我发现它非常有用。