1

ホームページが localhost:81/Mywebapp/login.jsf である Primefaces+JSF Web サイトがあります。

ユーザーが 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"/>  

そのうちの 1 つをウェルカム ファイルとして設定します。これらのソリューションの1つがあなたのために仕事をするはずです:-)

于 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;
  }
}

これにより、次の 3 つの一般的な要件が解決されます。

  • 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

2番目の回答で申し訳ありませんが、コメントのフォーマットは実際にはうまくいきません:

 <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>

ピーターの答えは問題なく機能するはずですが、拡張機能について本当に心配している場合 (実際には問題ではありません)、サーブレットの下にマップする場所を追加するだけです。これにより、*.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 に答える