JSF 2.0 初學Demo

來源:互聯網
上載者:User

目錄結構:

Root

--Web Pages

        --login.xhtml

        --index.html

        --error.html

        --WEB-INF

                  --web.xml

--sources Packages

        --org

                  --b3log

                            --application

                                      --Login.java

                            --entity

                                      --User.java

pom.xml

 

  • 去除 XML 配置

          JSF2.0省去了大量的陪值,主要原因是納入了Facelets。省去了faces-config.xml中的大量配置。

<managed-bean><br /> <managed-bean-name>user</managed-bean-name><br /> <managed-bean-class><br /> com.corejsf.UserBean<br /> </managed-bean-class><br /> <managed-bean-scope>session</managed-bean-scope><br /> </managed-bean> 

  • 導航配置的簡化

不需要

<navigation-rule>  <navigation-case>    <from-view-id>/pages/login.xhtml</from-view-id>    <outcome>places</outcome>    <to-view-id>/pages/places.xhtml</to-view-id>  </navigation-case></navigation-rule>






這樣複雜的導航規則,只需要通過約定進行絕對路徑來進行導航便可。



例如



<h:form> <h:commandLink action="login" value="Back"/> </h:form>






就可以直接跳轉到同一級目錄下的login.xhtml頁面。



也可以根據java 應用代碼中返回的String來進行頁面的跳轉。



例如



public String login(final String password) { if (password.equals("Vanessa")) { return "index"; } return "error"; }


  • EL運算式的加強

以往 JSF 的運算式不支援參數的傳遞,現在我們可以通過配置相關的設定檔來實現

1.通過 Maven 擷取需要的依賴
<dependencies><br /> <dependency><br /> <groupId>javax.el</groupId><br /> <artifactId>el-api</artifactId><br /> <version>2.1.2-b05</version><br /> </dependency><br /> <dependency><br /> <groupId>org.jboss.el</groupId><br /> <artifactId>jboss-el</artifactId><br /> <version>2.0.1.GA</version><br /> </dependency><br /> </dependencies><br /><repositories><br /> <repository><br /> <id>sun</id><br /> <url>http://download.java.net/maven/2/</url><br /> </repository><br /> <repository><br /> <id>java.net</id><br /> <url>http://download.java.net/maven/2</url><br /> </repository><br /> <repository><br /> <id>jboss.org</id><br /> <url>http://repository.jboss.org/maven2</url><br /> </repository><br /> </repositories>

 

2. 在 web.xml 中配置一個 expressionFactory

   <context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>



3.就可以使用 EL 運算式傳入一個對象

eg:

<h:commandButton value="Login" action="#{login.login(user.password)}"/>

 

 

應用解說

使用者輸入使用者名稱和密碼,進行登入

    1.登入成功--密碼為“Vanessa”,進入 index.xhtml 頁面,顯示:Welcome,#{user.userName}!

    2.登入失敗--密碼不為“Vanessa”,進入 error.xhtml 頁面,提示錯誤原因,點擊Back後返回index.xhtml

 

 

部分代碼

        --login.xhtml

<?xml version='1.0' encoding='UTF-8' ?><br /><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br /><html xmlns="http://www.w3.org/1999/xhtml"<br /> xmlns:h="http://java.sun.com/jsf/html"><br /> <head><br /> <title>Welcome Login</title><br /> </head><br /> <body><br /> <h:form><br /> <h:panelGrid columns="2"><br /> <h:outputLabel for="userName" value="User Name"/><br /> <h:inputText id="userName" value="#{user.userName}"/><br /> <h:outputLabel for="password" value="Password"/><br /> <h:inputSecret id="password" value="#{user.password}"/><br /> <h:outputLabel value=""/><br /> <h:commandButton value="Login" action="#{login.login(user.password)}"/><br /> </h:panelGrid><br /> </h:form><br /> </body><br /></html><br />

        --index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br /><html xmlns="http://www.w3.org/1999/xhtml"><br /> <head><br /> <title>Index</title><br /> </head><br /> <body><br /> Welcome, #{user.userName}!<br /> </body><br /></html><br />

        --error.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br /><html xmlns="http://www.w3.org/1999/xhtml"<br /> xmlns:h="http://java.sun.com/jsf/html"><br /> <head><br /> <title>Error</title><br /> </head><br /> <body><br /> The Password is Error!<br /> <h:form><br /> <h:commandLink action="login" value="Back"/><br /> </h:form><br /> </body><br /></html><br />

        --Login.java

/*<br /> * To change this template, choose Tools | Templates<br /> * and open the template in the editor.<br /> */<br />package org.b3log.application.jsf;<br />import javax.faces.bean.ManagedBean;<br />import javax.faces.bean.SessionScoped;<br />import org.b3log.entity.User;<br />/**<br /> *<br /> * @author Vanessa<br /> */<br />@ManagedBean(name = "login")<br />@SessionScoped<br />public class Login {<br /> public String login(final String password) {<br /> if (password.equals("Vanessa")) {<br /> return "index";<br /> }<br /> return "error";<br /> }<br />}<br />

        --User.java

package org.b3log.entity;<br />import java.io.Serializable;<br />import javax.faces.bean.ManagedBean;<br />import javax.faces.bean.SessionScoped;<br />/**<br /> * This class depicts a user of B3log. This class only describes user's<br /> * information basically, such as user name, email address, etc. The security<br /> * information(i.e. user password, user roles, etc) is depicted in class<br /> * <code>UserAccount</code>.<br /> *<br /> * @author <a href="mailto:lly219@gmail.com" mce_href="mailto:lly219@gmail.com">Liyuan Li</a><br /> * @version 1.0.0.0, Aug 4, 2009<br /> * @see UserAccount<br /> */<br />@ManagedBean(name = "user")<br />@SessionScoped<br />public class User implements Serializable {<br /> private String userName;<br /> private String email;<br /> private String password;<br /> public String getEmail() {<br /> return email;<br /> }<br /> public void setEmail(String email) {<br /> this.email = email;<br /> }<br /> public String getUserName() {<br /> return userName;<br /> }<br /> public void setUserName(String userName) {<br /> this.userName = userName;<br /> }<br /> public String getPassword() {<br /> return password;<br /> }<br /> public void setPassword(String password) {<br /> this.password = password;<br /> }<br />}<br />

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.