Java Can';t重定向或分派到JSF2.0中的另一个页面
我正试图在我的项目中实现一个登录系统,但还没有成功。我在我的项目中使用Tomcat7、Java6和JSF2.0,我总是试图将用户重定向到另一个页面,但我得到了不同的错误 以下是登录.xhtml的相关部分:Java Can';t重定向或分派到JSF2.0中的另一个页面,java,jsf,Java,Jsf,我正试图在我的项目中实现一个登录系统,但还没有成功。我在我的项目中使用Tomcat7、Java6和JSF2.0,我总是试图将用户重定向到另一个页面,但我得到了不同的错误 以下是登录.xhtml的相关部分: <h:form id="form-login"> <fieldset> <div class="form-group"> <label for="login">Login:</label>
<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>
案例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)
我做错了什么?:/ 我认为您没有在switch中使用break语句,因此如果在案例0之后将执行案例1,并且您将收到错误“提交响应后无法转发”,请尝试从此函数返回url
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;
}
我认为您没有在开关中使用break语句,因此如果在案例0之后将执行案例1,并且您将得到错误“提交响应后无法转发”,请尝试从此函数返回url
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;
}
我认为您没有在开关中使用break语句,因此如果在案例0之后将执行案例1,并且您将得到错误“提交响应后无法转发”,请尝试从此函数返回url
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;
}
我认为您没有在开关中使用break语句,因此如果在案例0之后将执行案例1,并且您将得到错误“提交响应后无法转发”,请尝试从此函数返回url
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;
}
你没有在switch语句中使用break语句。是的,谢谢@Ajeesh,如我所说,新手错误:/你没有在switch语句中使用break语句。是的,谢谢@Ajeesh,如我所说,新手错误:/你没有在switch语句中使用break语句。是的,谢谢@Ajeesh,就像我说的,新手错误:/谢谢,这是Wooorkss!现在感觉自己是个混蛋:微笑总是能提高自己的知识水平谢谢,你帮了大忙!:)如果您打开所有Java编译器警告,编译器将警告您错误的case语句。谢谢,这是Wooorkss!现在感觉自己是个混蛋:微笑总是能提高自己的知识水平谢谢,你帮了大忙!:)如果您打开所有Java编译器警告,编译器将警告您错误的case语句。谢谢,这是Wooorkss!现在感觉自己是个混蛋:微笑总是能提高自己的知识水平谢谢,你帮了大忙!:)如果您打开所有Java编译器警告,编译器将警告您错误的case语句。谢谢,这是Wooorkss!现在感觉自己是个混蛋:微笑总是能提高自己的知识水平谢谢,你帮了大忙!:)如果您打开所有Java编译器警告,编译器将警告您错误的case语句。