私はprimefacesに不慣れで、jsfを使用して単純なWebアプリを実現しようとしています。このアプリには、ユーザーが名前とパスワードを入力できるlogin.xhtmlがあります。ログインが成功すると、LoginBeanクラスは彼をbasicSitesフォルダー内のindex.xhtmlという別のページにリダイレクトします。login.xhtmlではすべてが正常に機能しますが、index.xhtmlではエラーが発生しました。このサイトにリダイレクトした後、白いサイトしか表示されません。jQueryが定義されていないため、ブラウザーコンソールから参照エラーが発生したと表示されました。同様の問題を抱えている他の多くの記事を調べましたが、私の問題はまだ解決されていません。
理解を深めるためのコードスニペットを次に示します。
login.xhtml
<h:head>
<title>Zugangsverwaltung | Login</title>
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/default.css" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/syntax.css" />
<script type="text/javascript" href="#{request.contextPath}/scripts.js"/>
</h:head>
<h:body>
<script type="text/javascript">
jQuery(document).ready(function () {
jQuery('#logoutLink').fadeOut();
});
function handleLoginRequest(xhr, status, args) {
if(args.validationFailed || !args.loggedIn) {
jQuery('#dialog').effect("shake", { times:3 }, 100);
} else {
dlg.hide();
jQuery('#loginLink').fadeOut(0);
jQuery('#logoutLink').fadeIn();
}
} </script>
LoginBean.java
public void login(ActionEvent actionEvent) {
RequestContext context = RequestContext.getCurrentInstance();
FacesMessage msg = null;
boolean loggedIn = false;
FacesContext ctx = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) ctx.getExternalContext().getRequest();
try {
request.login(username, password);
loggedIn = true;
msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Willkommen", username);
FacesContext.getCurrentInstance().addMessage("global", msg);
} catch (ServletException e) {
loggedIn = false;
msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Login fehlgeschlagen!", "Invalid credentials");
FacesContext.getCurrentInstance().addMessage("local", msg);
}
try {
if (loggedIn) {
ExternalContext ectx = ctx.getExternalContext();
ectx.redirect(request.getContextPath() + "/basicSites/index.xhtml");
}
} catch (Exception e) {
System.out.println("LoginBean - login: " + e.getMessage());
}
そして、少なくともエラーが発生するindex.xhtml:
<h:head>
<title>Zugriffsverwaltung | Backend</title>
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/default.css" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/syntax.css" />
<script type="text/javascript" href="#{request.contextPath}/scripts.js" />
</h:head>
<h:body>
<script type="text/javascript">
jQuery(document).ready(function () { <!-- Here: JQuery is not definded -->
jQuery('#logoutLink').fadeOut();
});</script>
<p:layout fullPage="true" >
<p:layoutUnit id="center" position="center"> <!-- ... -->
誰かが今何をすべきか考えていることを願っています;)問題を解決するのに役立つすべてのヒントに感謝します。
よろしくお願いします:D