如何在index.xhtml中调用doFilter()

时间:2012-10-02 05:37:22

标签: java jsf

我参与了JSF登录应用程序。这里有两个调用doLogin()的方法,包括登录逻辑和doFilter()类中的LoginBean。在index.xhtml中有一个名为login的命令按钮,我在这里用它。 action="#{loginBean.doLogin}",我可以致电doLogin()。我的问题是如何致电doFilter()

1 个答案:

答案 0 :(得分:1)

假设您有一个这样的托管bean:

@RequestScoped
@ManagedBean
public class Login {

    public Login() {
    }

    public String doLogin() {
    }

    public void doFilter() {
    }
}

如果您需要在doFilter内调用doLogin方法,只需像在基本编程中一样添加调用:

public String doLogin() {
    //some code here...
    doFilter();
    //more code over here...
}

根据您的上一个问题:Primefaces Login Application,您混淆了属于Web过滤器的doFilter方法和属于托管bean的doLogin方法:

  • 当用户激活它调用此方法的事件时,FacesServlet将调用doLogin。例如,UI命令操作:

    <h:form>
        <h:commandButton value="Click me!" action="#{loginBean.doLogin}" />
    </h:form>
    
  • Web过滤器将调用doFilter方法。请注意,当且仅当请求URL与Web过滤器中声明的URLPattern匹配时,才会在(Faces)Servlet之前执行过滤器。这意味着:

    • 我们有一个URLPattern =“* .xhtml”
    • 的过滤器
    • 每当我向<whatever>.xhtml发出请求时,都会调用过滤器。
    • 调用时,它将执行doFilter方法(默认方法)。

更多信息:

作为旁注:您必须学习Java Web开发的基础知识最佳实践。