JSF托管bean和托管属性都是必要的吗?

 又ettl_329 发布于 2023-02-12 14:53

我是JSF的新手并且想知道:

如果我有一个处理给定页面的所有工作的控制器和一个包含所述页面的所有数据的bean,那么必须同时拥有

@ManagedProperty(value="#{myBean}") 

控制器上的注释和

@ManagedBean(name="myBean")
@SessionScoped

表单bean上的注释?

2 个回答
  • 我们使用@ManagedBean注释来注册带有JSF框架的java bean.这是faces-config.xml <managed-bean>元素的替代品.我们通常不使用name属性,因为它已经默认为一个简单的类名称驼峰.

    我们使用@RequestScope和其他范围注释通过注释显式指定我们想要的范围.这相当于指定<managed-bean-scope>xml条目.如果您未指定范围,则默认为@NoneScoped.

    我们@ManagedProperty在其value属性中使用并指定EL表达式,以便为JSF工件使用JSF提供的依赖注入引擎,例如具有更广范围和EL定义变量的其他托管bean param.我们这样做是为了我们需要在其他JSF工件中注入的值,最常见的是bean.注入的值在bean的@PostConstruct注释方法中可用.这是<managed-property>xml条目的替代方法.

    把它们加起来.用于使用@ManagedBean @RequestScopedJSF框架注册bean.使用@ManagedProperty这个bean里面能够他人其他JSF豆类中引用,在这个bean相同或更广泛的范围.如果您不需要在创建的bean中引用其他bean,则不需要使用@ManagedProperty注释,因为它纯粹是可选的.

    2023-02-12 14:56 回答
  • JSF中的托管bean用于存储网页的状态.JSF实现负责创建和丢弃bean对象(因此命名为managed bean).

    对于编写@ManagedBean的每个类,bean对象是由JSF实现创建的,当它检测到bean的名称使用时(您可以选择bean名称或将其保留给JSF以使用默认名称类)名称,第一个字符更改为小写).创建的对象放置在指定范围的映射中.每个作用域都有一个映射,用于存储指定了该作用域的bean对象.

    现在,如果您需要控制器中这些bean的值,则必须使用ManagedProperty注释注入它.请注意,您需要为控制器提供managedProperty的setter方法.

    因此,要回答您的问题,需要使用managedBean注释来告诉JSF实现管理bean实例并将值存储在特定于会话范围的表中.并且需要ManagedProperty注释来使用存储在当前会话中的bean,以便您可以访问其所有值.

    2023-02-12 14:56 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有