使用带有tile的css文件

时间:2011-10-04 15:33:32

标签: css struts2 tiles

我正在使用带有图块的css文件,但它无法正常工作。

我的tiles.xml是:

<tiles-definitions>
    <definition name="baseLayout" template="/jsps/mail/mailbase.jsp">
        <put-attribute name="css" value="/css/mail.css" type="string" /> 
        <put-attribute name="menu" value="/jsps/mail/menu.jsp"/>
       <put-attribute name="body" value=""/>
    </definition>
    <definition name="inbox.tile" extends="baseLayout">
        <put-attribute name="css" value="/css/mail.css" type="string" />
        <put-attribute name="body" value="/jsps/mail/inbox.jsp"/>
    </definition>
    <definition name="msgdetail.tile" extends="baseLayout">
        <put-attribute name="body" value="/jsps/mail/msgDetails.jsp"/>
    </definition>
    <definition name="compose.tile" extends="baseLayout">
        <put-attribute name="body" value="/jsps/mail/compose.jsp"/>
    </definition>
    <definition name="msgsent.tile" extends="baseLayout">
        <put-attribute name="body" value="/jsps/mail/msg_sent.html"/>
    </definition>
</tiles-definitions>

我的jsp是:

  <%@ page contentType="text/html;charset=UTF-8"%>
    <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
   <html>
    <head>
**<link type="text/css" rel="stylesheet"  href="<tiles:getAsString name='css'/>"/>**
    </head>
   <body>
<div id="left"><tiles:insertAttribute  name="menu"/></div>
<div id="right"><tiles:insertAttribute  name="body"/></div> 
   </body>
 </html>

我的CSS文件“mail.css”位于 tomcat_root / web-app-name / css / mail.css

和jsp在 tomcat_root / web-app-name / jsps / mailbase.jsp

控制流程如下:

请求----------&gt; inboxaction(struts2.xml)------------------&gt; inbox.tile(tiles.xml)

1 个答案:

答案 0 :(得分:0)

该行

<link type="text/css" rel="stylesheet"  href="<tiles:getAsString name='css'/>"/>

将被翻译为

<link type="text/css" rel="stylesheet"  href="/css/mail.css"/>

但您的CSS文件位于/web-app-name/css/mail.css

您应始终使用<c:url>生成网址:

<tiles:useAttribute id="relativeCssUrl" name="css"/>
<c:url var="absoluteCssUrl" value="${relativeCssUrl}"/>
<link type="text/css" rel="stylesheet"  href="${absoluteCssUrl}"/>

或者您也可以使用

<link type="text/css" rel="stylesheet"  href="${request.contextPath}/<tiles:getAsString name='css'/>"/>