1

我有一个 Primefaces+JSF 网站,其主页是 localhost:81/Mywebapp/login.jsf

如果用户转到:localhost:81/Mywebapp/,我想将用户重定向到该主页,因此他不需要编写完整的 URL。

我怎样才能做到这一点?我想这是 JBoss 中的一些配置

有什么帮助吗?谢谢

4

3 回答 3

4

实际上它应该在你的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"/>  

并将其中之一设置为您的欢迎文件。这些解决方案之一应该为您完成工作:-)

于 2012-04-28T20:23:31.560 回答
0

您始终可以使用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;
  }
}

这将解决三个常见的要求:

  • 该 URL/yourApp/admin/important将被重定向到 JSF 页面/jsf/admin/important.xhtml
  • 如果用户不是@LoggedIn,他将被重定向到/jsf/access/loginRequired.xhtml
  • 如果用户无权访问他将被重定向到的页面/jsf/access/accessDenied.xhtml
于 2012-04-29T05:28:15.910 回答
0

对不起第二个答案,评论中的格式并没有真正削减它:

 <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 的转发技巧不是一个坏主意——它在困难的情况下真的很有帮助)

于 2012-04-29T04:29:32.953 回答