2

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

4

1 に答える 1

5

ページに追加xmlns:p="http://primefaces.org/ui"してみてください

上記が役に立たない場合:

追加することもできます

<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />

<h:head>には、primefacs にバンドルされている jQuery が含まれている必要があります。

于 2013-02-03T15:11:08.363 に答える