我用 maven、jsf 和 richfaces 开发了一个动态 web 项目。我省略了历史,直奔我的问题。在与开发中断不久之后,我在 Eclipse->Tomcat 中陈述了我的项目。在我的起始页面上有图像和简单的登录表单。图像和设计都可以,地址http://localhost:8080/myapp/
应为(图像和 css 的链接就像 - myapp/img/header.png
)
登录后我重定向到登录页面(这是richfaces动态页面)http://localhost:8080/myapp/faces/statistics.xhtml
,所有指向图像和css的链接都转换为myapp
/faces/img/header.png
,之后没有图像和css。
我一头雾水,怎么回事?几天前它工作得很好。
在 web.xml 我有这个
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
我什至不知道从哪里开始解决我的问题。如何将图像返回设计?
更新
我发现这种不愉快的行为只存在于我的 layout.xhtml 中。因为只有我没有创建的这个文件。这是我们对所有项目的设计,简而言之,它看起来像这样:
…
<h:head>
<link href="css/main.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<img src="img/header.png">
… design …
<div class="menuAndContent">
<div class="menuLeft">
<ui:insert name="menuLeft" />
</div>
<div class="content">
<ui:insert name="content" />
</div>
</div>
… design …
<img src="img/selector2.gif">
…
所以我只为 div=content 和 div=menu 创建文件。该文件效果很好,它们上的所有图像都存在。
只是这个布局文件在跟我“开玩笑”。所有链接:css/main.css
img/header.png
img/selector2.gif
他们在第一步工作!在地址http://localhost:8080/myapp/
和 browser.dev.tool 向我显示他从路径中获取这些资源myapp/css/main.css
myapp/img/header.png
,当我更深入时http://localhost:8080/myapp/faces/statistics.xhtml
,登录后,我重定向到具有不同内容的同一页面。在 browser.dev.tool 中,我看到带有此链接的页面css/main.css
img/header.png
img/selector2.gif
- 一切都正确且很好,但是从这些资源中获取这些资源的路径myapp/css/main.css
myapp/img/header.png
转换为这些资源myapp/faces/css/main.css
myapp/faces/img/header.png
。那就是问题所在。