JavaEE6 FAQs 之@Model
原文鏈接: http://seamframework.org/Documentation/WhatIsThePurposeOfTheModelAnnotation
===@Model注解的用途 @Model注解做了如下的事情:
-
使bean擁有request-scoped周期范圍(取代默認的@dependent)
-
給bean一個EL命名
創建一個請求范圍并且賦予命名的bean,就像一個標注有@RequestScoped和@Named的類,自從這樣的注解組合頻繁的出現在Web應用中,CDI就提供了內建的注解@Model方便使用。
//@Model例子
@Model public class SampleBean {
private String value;
public String getValue() {
return value;
}
public String setValue(String value) {
this.value = value;
}
}
現在這個bean可以在JSF視圖中使用了:
<h:inputText value="#{sampleBean.value}"/>
通常如果你想在JSF頁面中通過EL命名訪問bean,你可能需要給類標注@Dependent注解。否則,任何通過JSF input設置的值都會立即失效。這樣是為什么CDI提供了@Model類型;它讓你給bean一個命名,并且一舉設置bean的周期為@RequestScoped。如果你確實在@dependent周期里通過JSF頁面中訪問一個bean,注入一個不同的bean,通過getter方法來保留給EL。
一個stereotype是用來聚合其它注解的注解。@Model是一個CDI內置stereotype,定義如下:
@Named @RequestScoped @Stereotype @Target({TYPE, METHOD}) @Retention(RUNTIME) public @interface Model {}
@Modelstereotype注解應該頻繁的應用在web應用中。
posted on 2011-07-12 14:14 kuuyee 閱讀(1705) 評論(0) 編輯 收藏 所屬分類: CDI 、JEE