【问题标题】:JSF and CDI with inputFile component带有 inputFile 组件的 JSF 和 CDI
【发布时间】:2014-04-15 12:19:25
【问题描述】:

我使用<h:inputFile> 组件制作了一个简单的xhtml 页面用于上传文件。一切正常。在托管 bean 中,我对 Logger 使用了依赖注入。我使用了一个工厂类和createLogger() 方法,为Logger 类的对象启用注入。 一切都很好,但是,如果没有托管 bean 中的 @Model 注释,任何事情都不会起作用。

有人可以解释@Model 注释的含义吗?

我在互联网上找不到正确的解释。对@Session@Request@Application 等其他注释的有根据的解释。

@Model 注解有什么作用?

【问题讨论】:

    标签: java jsf cdi


    【解决方案1】:

    Hej vmaric,

    @Model == @RequestScoped + @Named

    它将Backing Bean 直接暴露给您的JSF 2JSP,并且它的上下文将在servlet 请求结束后被销毁。

    所以它不应该用于实体。

    这是来自Weld Reference Guide的提示:

    请注意,控制器 bean 是请求范围和命名的。由于这种组合在 Web 应用程序中非常常见,因此在 CDI 中有一个内置的注释,我们可以将其用作速记。当在类上声明(原型)注解 @Model 时,它会创建一个请求范围和命名的 bean。

    【讨论】:

    • 我可以把它放在那里@RequestScoped 和@Named("sample") end 它和@Model 一样吗?或者它可以是 SessionScoped bean?那么模型注释的解释是什么?为什么我们需要它?
    • RequestScoped Beans 的上下文将在 Servlet 请求结束后销毁,SessionScoped Beans 上下文一直存在到您的 Browsersession 启动为止。
    • 是的,我现在这个。当我们有 SessionScoped 或 RequesScoped 注释时,为什么我们需要@Model!
    • 为了节省时间,因为只写 ´@Model´ 而不是 ´@Named("name")´ 和 ´@RequestScoped´ ...我们可以用作速记。
    猜你喜欢
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 2014-06-05
    相关资源
    最近更新 更多