0

这是我的 JSF 文件头:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" 
  xmlns:f="http://java.sun.com/jsf/core" 
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:p="http://primefaces.org/ui">
<h:head>
    <meta http-equiv="content-type" content="text/html;charset=iso-8859-1"/>
    <title>#{txt.TXT_TITLE_LOGIN}</title>
    <link rel="stylesheet" type="text/css" href="scripts/styles.css"/>
    <link rel="shortcut icon" href="./images/favicon.ico"></link>
    <script src="./scripts/scripts.js" type="text/javascript"/>
</h:head>
<body...

当我打开页面时,没有加载样式,看起来很丑,Firebug 显示:

<link href="scripts/styles.css" type="text/css" rel="stylesheet">
    The resource from this URL is not text: http://localhost:8080/EWC/scripts/styles.css
</link>

...但文件在那里,位于 /EWC/scripts 位置。

当我打开具有相同标题的其他页面时,一切正常。然后我回到这个页面,它也可以。但是,当此页面在干净的浏览器现金后首次加载时,它再次发生。

什么地方出了错?

4

1 回答 1

0

解决了。
类似问题的接缝与会话到期时的授权重定向在提交 JSF 表单时不起作用,页面保持不变

以下代码没有捕获css文件请求,因此它们被转发到登录页面gotoLogin()(以防用户未登录)。

if( requestURI.startsWith(req.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER) )
    chain.doFilter(request, response);
    return;
else
    gotoLogin(null, request, response);
    return;

我已经添加了

if( requestURI.endsWith("css") )
    chain.doFilter(request, response);
    return;

......它的工作原理。

正如 BalusC 所说,我应该在标题中使用<h:outputStylesheet>,<h:outputScript><h:graphicImage>不是<link>,<script><img>这永远不会发生。

于 2013-03-20T10:23:46.637 回答