0

我参与了JSF登录应用程序。这里有两个方法调用doLogin(),包括登录逻辑和类doFilter()内部LoginBean。在index.xhtml里面有一个命令按钮login,在这里我使用了这个。action="#{loginBean.doLogin}",所以我可以打电话。doLogin()我的问题是我怎么打电话doFilter()

4

1 回答 1

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,您混淆了doFilter属于 Web 过滤器的doLogin方法和属于托管 bean 的方法:

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

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

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

更多信息:

附带说明:您确实必须学习 Java Web 开发的基础知识最佳实践。

于 2012-10-02T06:03:43.990 回答