【问题标题】:Can a jsf managed bean behave like a servlet?jsf 托管 bean 的行为可以像 servlet 一样吗?
【发布时间】:2014-03-19 20:30:06
【问题描述】:

通常,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 cycleservlet life cycle 还是两者兼而有之?

【问题讨论】:

    标签: java jsf servlets managed-bean


    【解决方案1】:

    JSF 并不是这样工作的。视图中的表单字段(.jsf 或其他)由 bean 中的字段和属性镜像。当 servlet 被调用到堆栈的更上层时,它们会由 JSF 自动填充。

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

    【讨论】:

    • 请注意,当控制权传递给 bean 时,用户提交的值已经过验证和/或转换为最终形式,因此您获得了抽象。另请参阅 omnifaces 的 @Param 注释,以获取 CDI bean 中的请求参数。
    猜你喜欢
    • 1970-01-01
    • 2011-12-05
    • 2012-08-27
    • 2013-12-23
    • 2023-03-05
    • 2012-03-24
    • 2013-08-20
    • 2014-10-15
    • 2016-07-09
    相关资源
    最近更新 更多