样式表不适用于我的第一个JSF页面。我有一个index.jsp,它转发到我的第一个JSF页面。
<html>
<head></head>
<body>
<jsp:forward page="./start.jsf" />
</body>
</html>
在start.jsf上,样式表不适用,但如果我导航到第二页,我的样式表完全适用。
第二页是我之前的第一页,我有同样的行为。没有更改,只要页面不是行中的第一页,第二页就可以正常工作。
因此CSS和页面本身必须正确。我认为这是一个配置问题。
有什么想法吗?
答案 0 :(得分:3)
您应该使用调用FacesServlet
的URL来调用索引页面。它就是负责JSF工作的人。因此,您需要index.jsf
而不是index.jsp
来调用它。
然而,更好的方法是完全摆脱这个hacky索引页面,并在start.jsf
中将<welcome-file>
定义为web.xml
。
<welcome-file-list>
<welcome-file>start.jsf</welcome-file>
</welcome-file-list>
和在start.jsf
文件旁边的同一文件夹中提供空 start.jsp
文件,以便servletcontainer被欺骗了索引页面确实存在(默认情况下不会检查索引页面的任何servlet映射)。
答案 1 :(得分:0)
尝试使用重定向而不是转发。您可以在jsp中执行此操作:
<% response.setStatus(301);
response.setHeader("Location", "/start.jsf?" + request.getQueryString());
response.setHeader("Connection", "close");
%>
或使用
response.sendRedirect("/start.jsf?" + request.getQueryString());
这不是解决问题的最佳方法,我在我的项目中使用tuckey urlrewrite:
<urlrewrite>
...
<rule enabled="true">
<from>^/$</from>
<to last="true">/index.jsf</to>
</rule>
...
</urlrewrite>