использование CSS-файла с плитками - PullRequest
0 голосов
/ 04 октября 2011

Я использую файл css с плитками, но он не работает.

мой файл tile.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 / имя-веб-приложения / css / mail.css

, а jsp - в tomcat_root / web-app-name / jsps / mailbase.jsp

поток управления имеет вид:

запрос ----------> входящие сообщения (struts2.xml) ------------------> inbox.tile (iles.xml)

1 Ответ

0 голосов
/ 04 октября 2011

Строка

<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>для генерации 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'/>"/>
...