通常,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实例。