开发者

using css file with tiles

I m using a css file with tiles but it is not working.

my tiles.xml is:

<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>
    <definit开发者_如何转开发ion name="msgsent.tile" extends="baseLayout">
        <put-attribute name="body" value="/jsps/mail/msg_sent.html"/>
    </definition>
</tiles-definitions>

and my jsp is:

  <%@ 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>

My CSS file "mail.css" lies in tomcat_root/web-app-name/css/mail.css

and jsp is in tomcat_root/web-app-name/jsps/mailbase.jsp

control flow is like:

request---------->inboxaction(struts2.xml)------------------>inbox.tile (tiles.xml)


The line

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

will be translated to

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

But your CSS file is at /web-app-name/css/mail.css.

You should always use <c:url> to generate URLs:

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

Or you might also use

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜