jsf 管理的 bean 可以像 servlet 一样运行吗?



通常,servlet 有doGet()doPost()方法。它们被用来捕获传入的request parameters,然后可以在应用程序的任何部分使用,如果开发人员愿意的话。

现在,如果开发人员希望使用jsf managed bean而不是使用 servlet,有没有办法在 bean 本身中获取请求参数?如果是这样,怎么做?

我已经看过这个 POST,它显示了从 JSF 中的请求中获取内容的方法。这可以用来在托管 Bean 中获取请求参数,如下所示:

HttpServletRequest origRequest = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
String myReqQuery1 = origRequest.getParameter("ReqQuery1");

在这种情况下,应用程序会遵循jsf life cycle还是servlet life cycle或两者兼而有之?

JSF 并不是那样工作的。视图中的表单字段(.jsf 或其他字段)由 Bean 中的字段和属性镜像。当在堆栈中进一步调用 servlet 时,JSF 会自动填充它们。

这使得读取 HTTP 参数的需要变得多余,除非浏览器从非基于 JSF 的表单登陆 JSF 页面。为此,像Spring-MVC这样的东西可以接受目标URI,并在将浏览器重定向到JSF驱动的URL之前连接到ManagedBean实例。

相关内容

最新更新