2013-10-31 72 views
-1

我想根據用戶是否引入正確的密碼重定向到兩個不同的頁面。我試過sendRedirectforward,但它沒有奏效。我有一個託管Bean有條件,並且必須根據條件顯示xhtml頁面。JSP:重定向到JSP中的xhtml

託管bean

@ManagedBean 
@SessionScoped 
public class datos { 
private String usuario, contraseña, response=null; 

public datos() { 
} 

public String getUsuario() { 
    return usuario; 
} 

public void setUsuario(String usuario) { 
    this.usuario = usuario; 
} 

public String getContraseña() { 
    return contraseña; 
} 

public void setContraseña(String contraseña) {  
    this.contraseña = contraseña; 
} 

public void getResponse() throws IOException{ 
    if(contraseña.equals("1111")) 
       **REDIRECT TO PAGE 1**  
    else { 
       **REDIRECT TO PAGE 2** 
    } 
} 

}   

感謝您的幫助!

+0

只是一個問題,你不與命名的變量任何問題'contraseña' –

+1

分享您的文件夾結構和代碼你如何重定向到其他頁面。不重定向意味着你有任何錯誤或只是得到一個空白頁面或什麼? – BholaVishwakarma

+0

- 我對'contraseña'沒有任何問題。 - 我想重定向到一個名爲'tienda.xhtml'的頁面,或者,如果條件爲負,則重定向到'login.xhtml'。問題是我不知道重定向是否可以在bean內完成,或者必須在另一個類中完成,如果是在另一個類中,我也不知道如何實現。 最近我嘗試了'FacesContext.getCurrentInstance()。getExternalContext()。dispatch(「tienda.xhtml」);'但是我得到這個**錯誤**:'/tienda.xhtml @ 10,62 value =「#{datos 「響應}」:類'modelos.datos'沒有屬性'響應'。' – leonishan

回答

1

使用ExternalContext#redirect

FacesContext facesContext = FacesContext.getCurrentInstance(); 
ExternalContext externalContext = facesContext.getExternalContext(); 
if(loginSuccess) { 
     externalContext.redirect(url1); 
} else { 
     externalContext.redirect(url2); 
} 
-1

如果您正在使用命令按鈕/鏈接你可以寫一個操作方法在豆.specify您導航輸出那裏。

<h:commandButton value="login" action="#{yourBeanName.Login}" 

在Managed Bean的

public String Login() 
{ 

    if(correct login credential) 
    { 
     return "success"; 
     } 
    else 
    { 

     return "failure"; 
    } 

} 

寫faces-config.xml中正確的導航規則。

我希望這能解決您的問題。

0

它的工作原理!我實現了這一點,如果它可以幫助別人: 進入的JavaBean

public void comprobarContraseña() throws IOException{ 
FacesContext facesContext = FacesContext.getCurrentInstance(); 
ExternalContext externalContext = facesContext.getExternalContext(); 
if(contraseña.equals("1111")) { 
    externalContext.redirect("tienda.xhtml"); 
} else { 
    externalContext.redirect("login.xhtml"); 
} 
} 

而且在的commandButton的XHTML內:

<h:commandButton id="submit" value="Envia" action="#{datos.comprobarContraseña}" /> 

謝謝大家!

-1

這兩個代碼來自jsf到jsp和jsf。

 <h:commandLink value="[#{msg['cancel.hyperlink']}]" 
     action="#{editSchemeHandlerCitiPost.redirectToSchemeList}" 
     immediate="false" /> 


    public String redirectToSchemeList() throws IOException{ 
    if(getServletRequest().getRequestURI()!=null && getServletRequest().getRequestURI().contains("editScheme.jsf"))//current page 
    { 

     FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("org.ajax4jsf.application.AjaxStateManager.VIEW_STATES_MAP"); 
     FacesContext.getCurrentInstance().getExternalContext().redirect("/ns/jsp/jsf/close.jsf"); 
    }else{ 
     FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("org.ajax4jsf.application.AjaxStateManager.VIEW_STATES_MAP"); 
     FacesContext.getCurrentInstance().getViewRoot().setViewId("/sch.do?actionKey=list"); 
     FacesContext.getCurrentInstance().getExternalContext().redirect("/ns/sch.do?actionKey=list"); 
    } 
    return ""; 
} 
+0

許多人downvote沒有他們有一個知識.... –

+0

沒有代碼的知識,他們可以downvote .... –