我有一个 Primefaces+JSF 网站,其主页是 localhost:81/Mywebapp/login.jsf
如果用户转到:localhost:81/Mywebapp/,我想将用户重定向到该主页,因此他不需要编写完整的 URL。
我怎样才能做到这一点?我想这是 JBoss 中的一些配置
有什么帮助吗?谢谢
我有一个 Primefaces+JSF 网站,其主页是 localhost:81/Mywebapp/login.jsf
如果用户转到:localhost:81/Mywebapp/,我想将用户重定向到该主页,因此他不需要编写完整的 URL。
我怎样才能做到这一点?我想这是 JBoss 中的一些配置
有什么帮助吗?谢谢
实际上它应该在你的web.xml
文件中,试着把它放在这个条目的结尾
<welcome-file-list>
<welcome-file>/login.jsf</welcome-file>
</welcome-file-list>
编辑
我还通过像这样创建一个新的 index.jsp 解决了这个问题
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<jsp:forward page="/login.jsf" />
</body>
</html>
或者放一个带有这个元数据的 html 文件
<meta http-equiv="Refresh" content= "0; URL=login.jsf"/>
并将其中之一设置为您的欢迎文件。这些解决方案之一应该为您完成工作:-)
您始终可以使用PrettyFaces 之类的 URL 重写引擎来执行此操作。您必须在您的中激活它,web.xml
然后定义如下重写规则:
<url-mapping id="login">
<pattern value="/login" />
<view-id value="/legacy/user/login.xhtml" />
</url-mapping>
因为您明确提到login.jsf
,我认为考虑包含一个为您执行此操作(以及许多其他事情)的安全框架是一个好主意。Seam 安全为此提供了类型安全的注解:
@ViewConfig
public interface SeamPages
{
static enum Pages0
{
@ViewPattern("/jsf/admin/important.xhtml")
@UrlMapping(pattern="/admin/important")
@LoginView("/jsf/access/loginRequired.xhtml")
@AccessDeniedView("/jsf/access/accessDenied.xhtml")
@RestrictAtPhase(PhaseIdType.RESTORE_VIEW)
@LoggedIn
ENUM0;
}
}
这将解决三个常见的要求:
/yourApp/admin/important
将被重定向到 JSF 页面/jsf/admin/important.xhtml
。@LoggedIn
,他将被重定向到/jsf/access/loginRequired.xhtml
/jsf/access/accessDenied.xhtml
对不起第二个答案,评论中的格式并没有真正削减它:
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
...
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
...
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
<url-pattern>*.jsf</url-pattern>
<url-pattern>subdir/*</url-pattern>
</servlet-mapping>
彼得的回答应该可以正常工作,但如果您真的关心扩展(这并不重要),那么只需在 servlet 下添加您想要映射的位置。这会映射 *.xhtml、*.jsf 和 'subdir/' 下的任何内容。
If you had a hard file:
- index.xhtml
Myapp/index.xhtml and
Myapp/index.jsf
would map to the same file. xhtml is since your default suffix is xhtml
老实说,我希望这对 Primefaces 2 有所帮助,我肯定会使用 xhtml,因为这是规范。使用 3 并没有那么重要,但我仍然使用 xhtml,因为它不是我通常在我的服务器上拥有的东西。
祝你好运(Petr 的转发技巧不是一个坏主意——它在困难的情况下真的很有帮助)