JSF2プロジェクトに取り組んでいます。login.xhtmlページをweb.xmlのエントリページとして定義しました
<welcome-file-list>
<welcome-file>login.xhtml</welcome-file>
</welcome-file-list>
また、ユーザーがログインしているかどうかを確認するためのフィルターもあります
@WebFilter(filterName = "loginCheckFilter", urlPatterns={"/*"})
public class LoginCheckFilter implements Filter
{
@Inject
private LoginStatus loginStatus;
public void do Filter(...)
{
try{
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
String path = req.getRequestURI();
if(StringUtils.isNotBlank(path)
&& StringUtils.contains(path, ".xhtml")
&& !StringUtils.endsWith(path, "login.xhtml"))
{
if(loginStatus == null
|| !loginStatus.isLoggedIn())
{
res.sendRedirect(req.getContextPath() + "/login.xhtml");
}
else
{
chain.doFilter(request, response);
}
}
else
{
chain.doFilter(request, response);
}
}catch (Exception ex)
{
log.error(ex);
}
}
.... ....
}
私のcssファイルは次のスタイルで参照されました:
<link href="css/styles.css" rel="stylesheet" type="text/css"/>
css参照スタイルをJSF2リソースハンドラー(http://www.mkyong.com/jsf2/resources-library-in-jsf-2-0/)に変更するまで、すべてが正常に機能します。すべてのcssファイルをresourcesフォルダーにコピーし、ライブラリ名とバージョン番号を指定しました。だから今私は次のようにcssを参照します:
<h:outputStylesheet library="default" name="css/styles.css"/>
変更後、login.xhtmlはスタイルシートをレンダリングしなくなります。login.xhtmlページの直後にwelcome.xhtmlページがあります。これは、コアコンテンツを除いてほぼ同じ構造ですが、このページは完全に正常にレンダリングされます。login.xhtmlを更新しましたが、レンダリングされません。しかし、ログインしたら、次のページに進み、login.xhtmlに戻って更新すると、スタイルがレンダリングされます。また、loginCheckFilterを外すと、login.xhtmlがスタイルシートをレンダリングします。それで、誰かが同様の状況に遭遇し、それを解決する方法を知っている場合はどうなりますか?ありがとう!