如何在发送请求时从ManagedBean重定向是一个Ajax请求?

Bhe*_*ung 16 navigation ajax primefaces jsf-2 managed-bean

我正在使用PrimeFaces和JSF2.我试图通过发送登录名和密码作为Ajax请求来验证用户.在支持bean的action方法中,我试图验证用户并在验证成功时重定向到新视图.

使用primefaces时这可能吗?

因为我认为使用primefaces' p:commandButton,我只能有ajax行为或导航.

Bal*_*usC 29

是的,只需发送重定向而不是(默认)转发作为结果.该<navigation-case>稀少JSF 2.0的方式将被追加?faces-redirect=true到action方法的结果字符串.

例如

public String login() {
    // ...
    return "home?faces-redirect=true";
}
Run Code Online (Sandbox Code Playgroud)


Ala*_*ect 16

这是您可能会发现有用的另一种技术.这是当您从未实现导航的Primefaces属性通过AJAX调用方法时.例如,我有一个ap:tree对象,其中包含nodeSelectionListener选择的方法.

在该方法中,您可以像这样调用重定向:

String url = (something)
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
try {
        ec.redirect(url);
} catch (IOException ex) {
        Logger.getLogger(Navigation.class.getName()).log(Level.SEVERE, null, ex);
}
Run Code Online (Sandbox Code Playgroud)

希望您觉得这个有帮助.

  • 这实际上是相同的,但采用老式的 JSF 1.x 方式。 (2认同)