Facelets视图是XHTML
页面。 您可以通过向页面添加组件来创建网页或视图,将组件连接到后端bean
的值和属性,并在组件上注册转换器,验证器或侦听器。
XHTML
网页作为前端。 您的应用程序的第一页默认为index.xhtml
。
网页(如,在index.xhtml
中)的第一部分声明页面的内容类型,即XHTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> `` 在下一段中指定`XHTML`页面的语言,然后声明网页中使用的标签库的XML命名空间。 ```html <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core">
一个完整的文件:index.xhtml 代码内容如下所示 -
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core"> <h:head> <title>Jsf Form</title> </h:head> <h:body> <h:form id="form"> <h:outputLabel for="username">User Name</h:outputLabel> <h:inputText id="name" value="#{user.name}" required="true"> <f:validateRequired for="name" /> </h:inputText><br/> <h:commandButton value="OK" action="response.xhtml"></h:commandButton> </h:form> </h:body> </html>
Facelets HTML标签以h:
开头,用于在网页和核心标签上添加组件f:validateRequired
用于验证用户输入。
h:inputText
标签接受用户输入,并通过EL表达式#{user.name}
设置托管bean
属性名称的值。
运行index.xhtml
文件后,JSF将呈现一个HTML索引页面。输出如下所示 -
这是创建Facelets视图的过程。现在,您可以创建第二个xhtml
页面:response.xhtml 其中的代码内容如下 -
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html"> <h:head> <title>Response Page</title> </h:head> <h:body> <h1> Hello #{user.name} </h1> </h:body> </html>
运行 index.xhtml
文件后,将显示以下输出。
在输入框中写入一个名字,提交得到如下结果 -
通过将Web部署描述符文件中的Faces Servlet映射到web.xml
文件中来完成JavaServer Faces应用程序的配置。
在NetBeans IDE中,会自动为您创建一个Web部署描述符文件。下面给出了一个自动生成的web.xml
文件的内容。
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <session-config> <session-timeout> </session-timeout> </session-config> <welcome-file-list> <welcome-file>faces/index.xhtml</welcome-file> </welcome-file-list> </web-app>