2013-10-31 74 views
1

我想创建一个带有注销链接的菜单。primefaces在使用confirmdialog时不刷新页面

我用这个代码:

<p:menubar> 
      <p:menuitem value="Logout" oncomplete="confirmation.show()"/> 

      <f:facet name="options"> 
       <p:inputText style="margin-right:10px" /> 
       <p:commandButton type="button" value="Logout" icon="ui-icon-extlink" /> 
      </f:facet> 
</p:menubar> 

<p:confirmDialog message="Are you sure you want to logout?" 
      showEffect="bounce" hideEffect="explode" 
      header="Logout" severity="alert" 
      widgetVar="confirmation"> 

      <p:commandButton value="Yes Sure" update="messages" 
       oncomplete="confirmation.hide()" 
       actionListener="#{authBean.logout}" 
       /> 
      <p:commandButton value="Not Yet" onclick="confirmation.hide()" 
       type="button" /> 

</p:confirmDialog> 

这里是authBean我的登录和注销方法:

public String login() { 
    try{ 
    UserService userService = new UserService(); 
    User currentUser = userService.findUser(username, password); 
    System.out.println(currentUser); 
    if (currentUser != null) { 
     HttpSession session = (HttpSession) FacesContext 
       .getCurrentInstance().getExternalContext().getSession(true); 
     session.setAttribute("currentUser", currentUser); 
     return "index"; 
    } 
    else return null; 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
     FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.toString(), e.toString()); 
     FacesContext.getCurrentInstance().addMessage(null, message); 
     return null; 
    } 

} 

public String logout() { 
    HttpSession session = (HttpSession) FacesContext.getCurrentInstance() 
      .getExternalContext().getSession(false); 
    session.invalidate(); 
    return "login"; 
} 

这里是我的脸,配置:

<navigation-rule> 
    <from-view-id>/*</from-view-id> 
    <navigation-case> 
     <from-outcome>logout</from-outcome> 
     <to-view-id>/welcome.xhtml</to-view-id> 
     <redirect /> 
    </navigation-case> 
    </navigation-rule> 

我的问题是当我在确认对话框中按“是”时,该页面不会刷新为welcome.xhtml。我必须按相同的菜单按钮或任何其他按钮才能更新页面。在确认对话框中按下Yes后,我希望它更新为welcome.xhtml。

+0

你正在返回''login''作为结果。这不匹配。 – BalusC

+0

你能为这个问题得到答案吗?我也有同样的问题。 –

回答