ホームページが localhost:81/Mywebapp/login.jsf である Primefaces+JSF Web サイトがあります。
ユーザーが localhost:81/Mywebapp/ にアクセスした場合、ユーザーをそのホームページにリダイレクトしたいので、完全な URL を記述する必要はありません。
どうやってやるの?JBossの設定だと思います
何か助けはありますか?ありがとう
ホームページが localhost:81/Mywebapp/login.jsf である Primefaces+JSF Web サイトがあります。
ユーザーが 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"/>
そのうちの 1 つをウェルカム ファイルとして設定します。これらのソリューションの1つがあなたのために仕事をするはずです:-)
これは、 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 つの一般的な要件が解決されます。
/yourApp/admin/important
は JSF ページにリダイレクトされます/jsf/admin/important.xhtml
。@LoggedIn
彼はにリダイレクトされます/jsf/access/loginRequired.xhtml
/jsf/access/accessDenied.xhtml
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 の転送トリックは悪い考えではありません。厳しい状況では非常に役立ちます)。