我参与了JSF
登录应用程序。这里有两个调用doLogin()
的方法,包括登录逻辑和doFilter()
类中的LoginBean
。在index.xhtml
中有一个名为login
的命令按钮,我在这里用它。 action="#{loginBean.doLogin}"
,我可以致电doLogin()
。我的问题是如何致电doFilter()
。
答案 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之前执行过滤器。这意味着:
<whatever>.xhtml
发出请求时,都会调用过滤器。doFilter
方法(默认方法)。更多信息:
作为旁注:您必须学习Java Web开发的基础知识和最佳实践。