2014-02-19 32 views
0

通常,一个servlet有doGet()doPost()方法。如果开发人员愿意,它们可用于捕获传入的request parameters,然后可将其用于应用程序的任何部分。jsf托管bean能像servlet一样行为吗?

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

我看到了这个POST它显示了从JSF中的请求中获取东西的方法。这能用来获得这样在管理bean的请求参数:

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

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

回答

0

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

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

+0

请注意,当控制传递给bean时,用户提交的值*已经过验证和/或转换为它们的最终形式,因此您将获得抽象。另请参阅omnifaces的[@Param](http://showcase.omnifaces.org/cdi/Param)注释以获取请求CDI bean中的参数。 – mabi