2013-02-03 4 views
1

저는 primeface를 처음 사용하고 jsf를 사용하여 간단한 웹 응용 프로그램을 구현하려고합니다. 이 응용 프로그램에서는 login.xhtml을 사용하여 사용자가 이름과 암호를 입력 할 수 있습니다. 로그인이 성공하면 LoginBean 클래스가 그를 basicSites 폴더의 index.xhtml이라는 다른 페이지로 리디렉션합니다. login.xhtml에서 모든 것이 정상적으로 작동하지만 index.xhtml에서 오류가 발생했습니다. 이 사이트로 리디렉션 한 후에는 jQuery가 정의되어 있지 않으므로 화이트 사이트 만 표시되고 브라우저 콘솔에 참조 오류가 있음이 표시됩니다. 비슷한 문제가있는 다른 많은 기사를 조사했지만 내 문제는 아직 해결되지 않았습니다.jquery (primefaces)는 리디렉션 후에 포함되지 않습니다.

다음은 이해를 돕기위한 코드입니다.

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

봅니다 위의 실 거예요 도움이 경우 페이지

xmlns:p="http://primefaces.org/ui"를 추가 :

당신은 또한 당신의 <h:head>

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

을 추가 할 수 있습니다, 그것은해야 primefacs에 번들 된 jQuery를 포함하십시오.

+0

답해 주셔서 고맙습니다 : DI는 이미 xmlns : p ...를 가지고 있습니다.하지만 게시하는 것을 잊어 버린 것처럼 보입니다 ... 죄송합니다 ^^ 매뉴얼에 h : outputScript도 포함되어 있습니다. 많은 다른 기사, 그리고 그것을 물론 시도했지만 여전히 나를 위해 일하지 않을거야 : (( – jennymo

+0

@ BlaBlub js 파일에 코드를 삽입하고 그것을 포함 ... (js 코드를 별도의 .js 파일로 이동) – Daniel

+0

아, 좋은 생각 : D이 일을 한 후에는 브라우저 콘솔에 오류가 표시되지 않습니다. 그러나 나는 아직도 아무것도 보지 못했습니다 ...-- 리다이렉트에 의해 완전한 프라임 표면 자원이 손실 될 가능성이 있습니까? 왜냐하면 전체 ... 블록을 index.xhtml에서 간단한 htmltextline으로 바꿀 때 (예 : Hello World) 나는 xmlns : p = "http : // primefaces를 리디렉션 한 후 볼 수있었습니다. org/ui "는 내 파일에 포함되어 있습니다 ... – jennymo