我们faces-config.xml
在 JSF 1.0 中有关于托管 bean、依赖项和导航等的条目。
我正在使用 JSF 2.0 开发一个示例项目。但是,由于我不知道注释,我需要在face-config.xml
外部包含。请提供解决方案,因为在 JSF 2.0 中我们不需要包含它。背后的原因是什么?我们如何将 bean 设置为托管 bean。什么是注解?它是如何使用的?
我们faces-config.xml
在 JSF 1.0 中有关于托管 bean、依赖项和导航等的条目。
我正在使用 JSF 2.0 开发一个示例项目。但是,由于我不知道注释,我需要在face-config.xml
外部包含。请提供解决方案,因为在 JSF 2.0 中我们不需要包含它。背后的原因是什么?我们如何将 bean 设置为托管 bean。什么是注解?它是如何使用的?
(...) 在 JSF 2.0 中我们不需要包含它。背后的原因是什么?
三个字:易于开发。需要编写的代码更少——样板代码被删除,尽可能使用默认值,注释用于减少对部署描述符的需求。
我们如何将 bean 设置为托管 bean。什么是注解?它是如何使用的?
托管 bean 使用@ManagedBean
注释来标识。bean 的范围也使用注解(@RequestScoped
、@SessionScoped
、@ApplicationScoped
等)指定。
因此 JSF 1.0 中的以下内容:
<managed-bean>
<managed-bean-name>foo</managed-bean-name>
<managed-bean-class>com.foo.Foo</managed-bean-class>
<managed-bean-scope>session</managed-bean>
</managed-bean>
可以在 JSF 2.0 中这样重写:
@ManagedBean
@SessionScoped
public class Foo {
//...
}
并在 Facelet 页面中这样引用:
<h:inputText label="eMailID" id="emailId"
value="#{foo.email}" size="20" required="true"/>
(默认情况下,托管 bean 的名称将是注释类的名称,类的第一个字母小写。)
您可以在 JSF2 中使用 faces-config.xml,与在 JSF 1.x 中使用的方式完全相同。事实上,虽然通常可以使用注解来代替 faces-config.xml 文件,但并不是每个 JSF 特性都可以通过注解严格使用,因此有时即使在 JSF2 中您也需要一个 faces-config 文件。
但是,有一个小区别,那就是您应该更新 faces-config 文件中的 xml 模式版本引用,以反映对 JSF2 生效的模式更改。