JSFJSF用戶界面組件模型
JSF UI組件示例
JSF <h:inputText>標籤
JSF <h:outputText>標籤
JSF <h:form>標籤
JSF <h:commandButton>標籤
JSF <h:inputtextarea>標籤
JSF <h:commandLink>標籤
JSF <h:inputSecret>標籤
JSF <h:inputHidden>標籤
JSF <h:inputFile>標籤
JSF <h:graphicImage>標籤
JSF <h:message>標籤
JSF <f:ajax>標籤
JSF單選按鈕
JSF表單組合框
JSF列表框
JSF多選列表框
JSF輸出格式化
JSF輸出樣式
JSF <h:attribute>標籤
JSF <h:setPropertyActionListener>標籤
JSF託管Bean
託管bean它是一個純Java類,它包含一組屬性和一組getter
,setter
方法。
以下是託管bean方法執行的常見功能:
- 驗證組件的數據
- 處理組件觸發的事件
- 執行處理以確定應用程序必須導航的下一頁
- 它也可以作爲JFS框架的模型。
JSF託管Bean示例
請看看下面一段示例代碼 -
public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
您可以通過以下方式使用此bean
。
- 通過配置成XML文件。
- 通過使用註釋。
通過XML文件配置託管Bean
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>User</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
在xml文件配置bean
是比較舊方法。 在這種方法中,我們必須創建一個名爲faces-config.xml
的xml文件,JSF提供了配置bean
的標籤。
在上面的例子中,我們列出了bean-name
,bean-class
和bean-scope
。 所以,它可以在項目中訪問。
使用註釋配置託管Bean
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean // Using ManagedBean annotation
@RequestScoped // Using Scope annotation
public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
類中的[@ManagedBean](https://github.com/ManagedBean "@ManagedBean")
註解自動將該類註冊爲JavaServer Faces的資源。 這種註冊的託管bean在應用程序配置資源文件中不需要託管bean配置項。
這是應用程序配置資源文件方法的替代方法,並減少配置託管bean的任務。[@RequestScoped](https://github.com/RequestScoped "@RequestScoped")
註釋用於提供託管的範圍。 您可以使用註解來定義bean將被存儲的範圍。
您可以對bean類使用以下範圍:
- **應用程序(@ApplicationScoped)**:應用程序範圍在所有用戶中保持不變,與Web應用程序的交互。
- **會話(@SessionScoped)**:會話範圍在Web應用程序中的多個HTTP請求中保持不變。
- **視圖(@ViewScoped)**:在用戶與Web應用程序的單個頁面(視圖)進行交互時,視圖範圍仍然存在。
- **請求(@RequestScoped)**:在Web應用程序中的單個HTTP請求期間,請求範圍仍然存在。
- **無(@NoneScoped)**:表示未爲應用程序定義作用域。
- **自定義(@CustomScoped)**:用戶定義的非標準作用域。 其值必須配置爲
java.util.Map
,自定義範圍很少使用。
急切管理Bean
託管bean
默認是懶惰的。 這意味着,只有在從應用程序發出請求時纔會去實例化bean。
如果想自動提前強制將bean
實例化,那麼可在應用程序啓動時,可以強制將bean
實例化並放置在應用程序([@ApplicationScoped](https://github.com/ApplicationScoped "@ApplicationScoped")
)範圍內。您需要將託管 bean 的eager
屬性設置爲true
,如以下示例所示:
@ManagedBean(eager=true)