2013-11-09 23 views
0

我試圖在我的項目中實現登錄系統,但我無法獲得成功。我在我的項目中使用了Tomcat 7,Java 6和JSF 2.0,並且總是嘗試將用戶重定向到另一個頁面,我得到了一個不同的錯誤。無法重定向或發送到JSF 2.0中的另一個頁面

以下是login.xhtml相關部分:

<h:form id="form-login"> 
    <fieldset> 
    <div class="form-group"> 
     <label for="login">Login:</label> 
     <p:inputText styleClass="form-control" autocomplete="off" id="login" 
     placeholder="Nome de usuário" style="padding: 6px 12px;" required="true" 
     requiredMessage="Este campo é obrigatório." value="#{loginMBean.login}"/> 
    </div> 

    <div class="form-group"> 
     <label for="senha">Senha: </label> 
     <p:inputText styleClass="form-control" autocomplete="off" id="senha"         
       type="password" placeholder="Senha" style="padding: 6px 12px;" 
       required="true" requiredMessage="Este campo é obrigatório." 
       value="#{loginMBean.password}" /> 
    </div> 

    <div class="form-actions"> 
     <h:commandButton value="Entrar" styleClass="btn btn-default btn-lg" 
       action="#{loginMBean.entrar}" /> 
    </div> 
    </fieldset> 
</h:form> 

loginMBean

(String login, string password, this part is okay, already works) 
... 

public void entrar() throws IOException{ 

    Login loginTentativa = new Login(login, password); 

    int resultadoValidacao = controle.validaLogin(loginTentativa); 

    switch (resultadoValidacao) { 
     case 0: 
       FacesContext.getCurrentInstance().getExternalContext().dispatch("first/1-dados-escola.xhtml"); 
     case 1:       
       FacesContext.getCurrentInstance().getExternalContext().redirect("/user/principal.xhtml"); 

     default: 
      System.out.println("Usuário não autenticado."); 
    } 
} 

案例0:用戶通過身份驗證,這是不是第一次他訪問該網站。
案例1:用戶認證,這是他第一次訪問該網站。
案例2:未通過身份驗證。

在我的測試,我有情況1。但是,當我使用「重定向」,我得到了以下錯誤消息:

javax.faces.el.EvaluationException: java.lang.IllegalStateException 
    javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101) 
    com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:101) 
    javax.faces.component.UICommand.broadcast(UICommand.java:315) 
    javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:791) 
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1256) 
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 

當我嘗試使用「調度」 ,我得到了:

javax.faces.el.EvaluationException: java.lang.IllegalStateException: Cannot forward after response has been committed 
    javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101) 
    com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:101) 
    javax.faces.component.UICommand.broadcast(UICommand.java:315) 
    javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:791) 
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1256) 
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 

我做錯了什麼? :/

+1

您在switch語句中沒有使用break語句。 – Ajeesh

+0

是的,謝謝@Ajeesh正如我所說的,新手錯誤:/ – Paladini

回答

3

我想你沒有使用break語句內部開關,所以如果情況0的情況下後1將被執行,你會得到錯誤「無法向前後反應一直致力於」,試圖從返回網址此功能,

public String entrar() throws IOException{ 

Login loginTentativa = new Login(login, password); 
String result=""; 

int resultadoValidacao = controle.validaLogin(loginTentativa); 

switch (resultadoValidacao) { 
    case 0: 
      result="first/1-dados-escola.xhtml"; 
    break; 
    case 1:       
      result="/user/principal.xhtml"; 
    break; 

    default: 
     System.out.println("Usuário não autenticado."); 
} 

return result; 
} 
+0

謝謝,這個wooorkkss!感覺一個混蛋現在:S – Paladini

+2

錯誤總是提高知識 – Ajeesh

+0

謝謝,你是非常有益的! :) – Paladini

相關問題