Your SlideShare is downloading. ×
0
Beginning Java EE 6 勉強会(4)            -プレゼンテーション-        担当者:@georgenano              George OKADA        2012/05/30
目次         プレゼンテーション第10章:JavaServer Faces第11章:ページとコンポーネント                        @georgenano第12章:処理とナビゲーション           ビジネス...
第10章                      JavaServer Faces12/05/30   Beginning JavaEE6 勉強会(4)   3
JSF(JavaServer Faces)とはJavaServer Faces (JSF) is a user interface (UI) framework for Java web   applications. [2]         ...
参考|StrutsとJSFとの比較Struts                   JSF1.2                 JSF2.0struts-config.xml        faces-config.xml       マネー...
①FacesServletとfaces-config.xml (第12章に詳解)FacesServlet:    ‣MVCモデルのコントローラの役割    ‣ユーザからのリクエストに応じて、マネージドBean上で定義したアク      ションを実...
①FacesServletとfaces-config.xml (第12章に詳解)faces-config.xmlのサンプル   <?xml version="1.0" encoding=‘UTF-8’?>   <faces-config xmln...
②ページとコンポーネント (第11章に詳解)ページ:  ‣MVCモデルのビューの役割  ‣ページ宣言言語にはFaceletsの利用が推奨(JSPも利用可)コンポーネント:    ‣ページを記述するための構成要素      ‣例:<h:head>...
③レンダラレンダラ:    ‣ユーザーインターフェイスの構造を、デバイスに適合したユーザーイン      ターフェイスの表現形式に変換するクラスのこと [3]    ‣レンダラの例:HTML4.01関連レンダラ、ワイヤレス・マークアップ言   ...
④コンバータと⑤バリデータ (第12章に詳解)コンバータ:    ‣次の2つの役割           (1)画面から入力された文字列を マネージドBeanのプロパティの型のオブ             ジェクトに 変換           (...
⑥マネージドBeanと画面遷移 (第12章に詳解)マネージドBean:  ‣画面遷移、EJB呼出、コンポーネントとデータの同期、ビジネスロジック       を行う役割        ➡JSFの肝   マネージドBeanの例   @Manage...
⑦Ajaxサポート (第12章で詳解)Ajaxサポート:    ‣非同期でページの一部を少しずつ更新する技術    ‣JSF2.0からは標準仕様でAjaxがサポートされた    ‣<f:ajax>タグを利用することで非同期処理が可能に12/05...
Exercise①|サンプルプログラムの確認目的:サンプルプログラムの概要を把握する課題:サンプルプログラムの中身を確認する準備:https://svn.kenai.com/svn/beginningee6~src/book/trunk/  c...
Exercise②|書籍情報の追加目的:JSFの概要を把握する課題:書籍情報に「著者名」を追加する手順: Chapter10プロジェクトの各ソースを変更    1.Bookエンティティへ「著者名」を追加    2.BookEJB, BookCo...
第11章              ページとコンポーネント12/05/30   Beginning JavaEE6 勉強会(4)   15
【再掲】JSF(JavaServer Faces)とはJavaServer Faces (JSF) is a user interface (UI) framework for Java web   applications. [2]     ...
準備以下では実例のソースを見ながら、(適宜、結果をブラウザなど で表示しながら)説明をお聞きください1.https://svn.kenai.com/svn/beginningee6~src/book/trunk/chapter11   からチェ...
HTMLHypertext Markup Language(HTML):    ‣Webページで最も使用されている言語    ‣通常<HTML>や<BODY>タグが必要だが、省略されてもブラウザは      表示してくれる    ‣XML的には...
XHTMLeXtensible HyperText Markup Language(XHTML):    ‣Webページの推奨言語    ‣厳密なXML構文規則に則っている    ‣XML構文規則とスキーマ制約の検証で管理、解析が用意    ‣...
CSSCascading Style Sheets(CCS):    ‣ドキュメントのプレゼンテーションを表現するスタイル言語    ‣色、フォント、レイアウトなどのデザインを定義    ‣ドキュメントのコンテンツとデザインを分離可能になる  ...
JavaScriptJavaScript:    ‣クライアント側のWeb開発に使用するスクリプト言語    ‣クライアント側で動的コンテンツを提供可能    ‣実例:ex01/newBookWithJavascript.xhtml      ...
JSPJavaServer Pages(JSP):    ‣クライアントのリクエストに対するレスポンスを動的に生成する言語    ‣サーバ側で保持されるDBやEJBを利用可能    ‣サーバ側で処理され、サブレットとしてコンパイルされる    ...
式言語(EL)とJSP Standard Tag LibraryExpression Language(EL式):   ‣JSPのスクリプト要素と同様のアクションを実行する簡単な構文の言語   ‣基本構文:�${expr}JSP Standar...
FaceletsFacelets:     ‣JSPに代わってビューを記述できるテンプレートフレームワーク     ‣XHTMLとFaceletsの標準タグ(ui接頭辞)で記述する     ‣実例:ex11/newBook.xhtml ex11...
JavaServer FacesJavaServer Faces:        ‣a user interface (UI) framework for Java web applications.[2]        ‣下記以外のJSTLは...
第12章                      処理と画面遷移12/05/30   Beginning JavaEE6 勉強会(4)   26
【再掲】JSF(JavaServer Faces)とはJavaServer Faces (JSF) is a user interface (UI) framework for Java web   applications. [2]     ...
①FacesServletjavax.faces.webapp.FacesServlet    ‣JSFにおけるjavax.servlet.Servletの実装    ‣全てのユーザからのリクエストはこのコントローラを経由する         ...
FacesContextjavax.faces.context.FacesContext    ‣リクエストの処理と対応するレスポンスの作成に関連付けるコンテキス        ト情報    ‣マネージドBeanでgetCurrentInsta...
JavaServer Facesページの6つのライフサイクル           利用者は           気にしない         コンバータ           レスポンス        バリデータ          レスポンス  リ...
④コンバータjavax.faces.convert.*  ‣UIコンポーネントの値と対応するプリミティブ型を相互自動変換  ‣使い方:     ‣<f:convertDataTime pattern=”MM/dd//yy”/>  ‣実例:ex1...
⑤バリデータjavax.faces.validator.*    ‣ユーザの入力を検証する    ‣使い方:<f:validateLength minimum=”2” maximum=”20”/>    ‣標準バリデータで満足できない場合、独自...
Exercise③|発行日の追加とタイトルの文字数チェック目的:コンバータとバリデータの使い方を把握する課題:書籍情報に「発行日」を追加し、「タイトル」が2文字以上20文字以下チェック  を追加する手順:Exercise②の結果のソースに以下を...
⑥マネージドBean作り方:    ‣@ManagedBeanアノテーションをクラスに付与    ‣JSF1.2まではfaces-config.xmlへのエントリが必要だった役割:    ‣状態の保持�book属性    ‣ページで参照するアク...
⑦Ajax概要:JSF2.0からAjaxが標準仕様になった使い方:    ‣準備:標準仕様で定義されたJavaScriptライブラリ(jsf.js)を使用      ‣<h:outputScript name=”jsf.js” library=...
Exercise④|書籍情報を非同期で表示する機能目的:マネージドBeanとAjaxの使い方を把握する課題:書籍情報を非同期で表示する機能を追加する手順:Exercise③の結果のソースに以下を実施    1.newBook.xhtmlに非同期...
引用文献[1] Antonio Goncalves 著, 日本オラクル株式会社 監訳「Beginning Java EE 6」2012年, 翔泳社[2] Java Community Process「JSR-000314 JavaServerT...
Upcoming SlideShare
Loading in...5
×

Beginning Java EE 6 勉強会(4) #bje_study

4,751

Published on

Published in: Technology
0 Comments
14 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,751
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
246
Comments
0
Likes
14
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript of "Beginning Java EE 6 勉強会(4) #bje_study"

    1. 1. Beginning Java EE 6 勉強会(4) -プレゼンテーション- 担当者:@georgenano George OKADA 2012/05/30
    2. 2. 目次 プレゼンテーション第10章:JavaServer Faces第11章:ページとコンポーネント @georgenano第12章:処理とナビゲーション ビジネスロジック 相互運用第06章:Enterprise Java Beans第07章:セッションBeanとタイマサービス @inatus 第13章:メッセージの送信第08章:コールバックとインターセプタ 第14章:SOAP Webサービス第09章:トランザクションとセキュリティ 第15章:RESTful Webサービス 永続化第02章:Javaと永続化 @making第03章:ORM第04章:永続性オブジェクトの管理 @kjstylepp第05章:コールバックエリア12/05/30 Beginning JavaEE6 勉強会(4) 2
    3. 3. 第10章 JavaServer Faces12/05/30 Beginning JavaEE6 勉強会(4) 3
    4. 4. JSF(JavaServer Faces)とはJavaServer Faces (JSF) is a user interface (UI) framework for Java web applications. [2] HTTP リクエスト XUL ④ コンバータ ブラウザ (Ajax) ① ③ JSP コンバータ XHTML HTML ⑦ Faces レンダラ JavaScript Servlet CSS ② ⑤ HTTP バリデータ バリデータ レスポンス faces- ① マネージド config.xml (オプション) Bean ⑥[1] ※但し、赤文字は発表者が追記した12/05/30 Beginning JavaEE6 勉強会(4) 4
    5. 5. 参考|StrutsとJSFとの比較Struts JSF1.2 JSF2.0struts-config.xml faces-config.xml マネージドBeanなどへの アノテーションDispatchAction メソッドバインディング メソッドバインディングアクションマッピング faces-config.xmlの マネージドBeanなどへの navigation-rule アノテーションActionForm マネージドBean マネージドBean[3] ※発表者がJSF2.0の列を追加した12/05/30 Beginning JavaEE6 勉強会(4) 5
    6. 6. ①FacesServletとfaces-config.xml (第12章に詳解)FacesServlet: ‣MVCモデルのコントローラの役割 ‣ユーザからのリクエストに応じて、マネージドBean上で定義したアク ションを実行する ‣JSF実装の内部に存在し、利用者が直接触ることはできない ➡JSFの利用者は気にしなくてもよいfaces-config.xml: ‣後述するマネージドBeanの一覧や、画面遷移情報を記述する設定 ファイル ‣JSF2.0からはマネージドBeanにアノテーションをつけることで同様の 意味となるため、省略可能になった ➡JSF2.0の利用者は気にしなくてもよい12/05/30 Beginning JavaEE6 勉強会(4) 6
    7. 7. ①FacesServletとfaces-config.xml (第12章に詳解)faces-config.xmlのサンプル <?xml version="1.0" encoding=‘UTF-8’?> <faces-config xmlns=”http://java.sun.com/xml/ns/javaee” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://java.sun.com/xml/nsjavaee http://java.sun.com/xml/ns/javaee/web-faceconfig_2_0.xsd” version=”2.0”> <managed-bean> <managed-bean-name>BookController</managed-bean-name> <managed-bean-class>BookController</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> <navigation-rule> <from-view-id>newBook.xhtml</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>listBooks.html</to-view-id> </navigation-case> </navigation-rule> </faces-config>12/05/30 Beginning JavaEE6 勉強会(4) 7
    8. 8. ②ページとコンポーネント (第11章に詳解)ページ: ‣MVCモデルのビューの役割 ‣ページ宣言言語にはFaceletsの利用が推奨(JSPも利用可)コンポーネント: ‣ページを記述するための構成要素 ‣例:<h:head>, <h:body>, <h:outputLabel>... [3]12/05/30 Beginning JavaEE6 勉強会(4) 8
    9. 9. ③レンダラレンダラ: ‣ユーザーインターフェイスの構造を、デバイスに適合したユーザーイン ターフェイスの表現形式に変換するクラスのこと [3] ‣レンダラの例:HTML4.01関連レンダラ、ワイヤレス・マークアップ言 語(WML)、Scalable Vector Graphics(SVG)... ➡JSFの利用者は(それほど)気にしなくて良い [3]12/05/30 Beginning JavaEE6 勉強会(4) 9
    10. 10. ④コンバータと⑤バリデータ (第12章に詳解)コンバータ: ‣次の2つの役割 (1)画面から入力された文字列を マネージドBeanのプロパティの型のオブ ジェクトに 変換 (2)マネージドBeanのプロパティの型のオブジェクトを レンダラ用の文字 列に 変換 ‣変換時にエラーが発生した場合、エラーメッセージを返却バリデータ: ‣ユーザが入力した値が有効か否か検証する役割 ‣複数のバリデータを1つのコンポーネントに関連付け可能 ‣検証時にエラーが発生した場合、エラーメッセージを返却12/05/30 Beginning JavaEE6 勉強会(4) 10
    11. 11. ⑥マネージドBeanと画面遷移 (第12章に詳解)マネージドBean: ‣画面遷移、EJB呼出、コンポーネントとデータの同期、ビジネスロジック を行う役割 ➡JSFの肝 マネージドBeanの例 @ManagedBean(name = “bookController”) public class BookController { @EJB private BookEJB bookEJB; private Book book = new Book(); public String doCreateBook(){ book = bookEJB.createBook(book); return “listBooks.xhtml”; } // bookのゲッター、セッター } マネージドBeanのページからの利用例 <h:inputText value=”#{bookController.book.isbn}”/> <h:outputText value=”#{bookController.book.isbn}”/> <h:commandButton value=”Create” action=”#{bookController.doCreateBook}”/>12/05/30 Beginning JavaEE6 勉強会(4) 11
    12. 12. ⑦Ajaxサポート (第12章で詳解)Ajaxサポート: ‣非同期でページの一部を少しずつ更新する技術 ‣JSF2.0からは標準仕様でAjaxがサポートされた ‣<f:ajax>タグを利用することで非同期処理が可能に12/05/30 Beginning JavaEE6 勉強会(4) 12
    13. 13. Exercise①|サンプルプログラムの確認目的:サンプルプログラムの概要を把握する課題:サンプルプログラムの中身を確認する準備:https://svn.kenai.com/svn/beginningee6~src/book/trunk/ chapter10からチェックアウトして、「依存関係で構築」手順: 1.「プロジェクトを実行」してサンプルアプリの挙動を確認 2.Book.java, BookEJB.java, BookController.javaの中身を確認 3.newBook.xhtml, listBooks.xhtmlの中身を確認 4.faces-config.xmlが無く、BookController.javaに「@ManagedBean」アノ テーションがある事を確認12/05/30 Beginning JavaEE6 勉強会(4) 13
    14. 14. Exercise②|書籍情報の追加目的:JSFの概要を把握する課題:書籍情報に「著者名」を追加する手順: Chapter10プロジェクトの各ソースを変更 1.Bookエンティティへ「著者名」を追加 2.BookEJB, BookControllerに影響が及ばないことを確認 3.newBook.xhtml, listBooks.xhtmlへ「著者名」を追加12/05/30 Beginning JavaEE6 勉強会(4) 14
    15. 15. 第11章 ページとコンポーネント12/05/30 Beginning JavaEE6 勉強会(4) 15
    16. 16. 【再掲】JSF(JavaServer Faces)とはJavaServer Faces (JSF) is a user interface (UI) framework for Java web applications. [2] HTTP リクエスト XUL ④ コンバータ ブラウザ (Ajax) ① ③ JSP コンバータ XHTML HTML ⑦ Faces レンダラ JavaScript Servlet CSS ② ⑤ HTTP バリデータ バリデータ レスポンス faces- ① マネージド config.xml (オプション) Bean ⑥[1] ※但し、赤文字は発表者が追記した12/05/30 Beginning JavaEE6 勉強会(4) 16
    17. 17. 準備以下では実例のソースを見ながら、(適宜、結果をブラウザなど で表示しながら)説明をお聞きください1.https://svn.kenai.com/svn/beginningee6~src/book/trunk/chapter11 からチェックアウト2.「プロジェクトを実行」3.http://localhost:8080/chapter11/から結果を確認12/05/30 Beginning JavaEE6 勉強会(4) 17
    18. 18. HTMLHypertext Markup Language(HTML): ‣Webページで最も使用されている言語 ‣通常<HTML>や<BODY>タグが必要だが、省略されてもブラウザは 表示してくれる ‣XML的には無効な場合が多く、検証できない ‣XML的には無効な例 ‣必要なタグがない ‣終了タグがない ‣タグに大文字と小文字が混在している ‣実例:ex01/newBook.html12/05/30 Beginning JavaEE6 勉強会(4) 18
    19. 19. XHTMLeXtensible HyperText Markup Language(XHTML): ‣Webページの推奨言語 ‣厳密なXML構文規則に則っている ‣XML構文規則とスキーマ制約の検証で管理、解析が用意 ‣XML的には有効にした例 ‣必要なタグを記述している ‣終了タグを記述している ‣タグを小文字で統一している ‣実例:ex01/newBook.xhtml12/05/30 Beginning JavaEE6 勉強会(4) 19
    20. 20. CSSCascading Style Sheets(CCS): ‣ドキュメントのプレゼンテーションを表現するスタイル言語 ‣色、フォント、レイアウトなどのデザインを定義 ‣ドキュメントのコンテンツとデザインを分離可能になる ‣実例:ex01/newBookWithCSS.xhtml12/05/30 Beginning JavaEE6 勉強会(4) 20
    21. 21. JavaScriptJavaScript: ‣クライアント側のWeb開発に使用するスクリプト言語 ‣クライアント側で動的コンテンツを提供可能 ‣実例:ex01/newBookWithJavascript.xhtml ‣必須入力項目(価格情報)が正しく入力されているか検証12/05/30 Beginning JavaEE6 勉強会(4) 21
    22. 22. JSPJavaServer Pages(JSP): ‣クライアントのリクエストに対するレスポンスを動的に生成する言語 ‣サーバ側で保持されるDBやEJBを利用可能 ‣サーバ側で処理され、サブレットとしてコンパイルされる ‣コンパイルされた結果はHTML、XHTMLの両方ある ‣ビジネスロジックとプレゼンテーションが混じっており、開発・保守が難 しい ‣基本構文:�<%@ ディレクティブ %>, <%! 宣言 %>, <% スクリプトレット %>, <%= 式 %> ‣実例:ex05/listBooks.jsp ex05/listBooks.jspx12/05/30 Beginning JavaEE6 勉強会(4) 22
    23. 23. 式言語(EL)とJSP Standard Tag LibraryExpression Language(EL式): ‣JSPのスクリプト要素と同様のアクションを実行する簡単な構文の言語 ‣基本構文:�${expr}JSP Standard Tag Library(JSTL): ‣JSPでよく使われるタグのライブラリ ‣JavaコードとXHTMLタグの混在を避ける事ができる ‣オブジェクトに対する値の設定、例外ハンドリング、条件付き処理、繰 り返し処理、DBアクセス... ‣コアアクション:<c:out>, <c:if>, <c:forEach>... ‣実例: ex06/checkNumbers.jsp12/05/30 Beginning JavaEE6 勉強会(4) 23
    24. 24. FaceletsFacelets: ‣JSPに代わってビューを記述できるテンプレートフレームワーク ‣XHTMLとFaceletsの標準タグ(ui接頭辞)で記述する ‣実例:ex11/newBook.xhtml ex11/layout.xhtml Faceletsのタグ [1] ※一部の説明を簡略化したタグ 説明<ui:composition> テンプレートを使用するコンポジションの定義<ui:component> コンポーネントの作成<ui:debug> デバッグ情報の取得<ui:define> テンプレートを使用し、ページに挿入するコンテンツを定義<ui:decorate> ページ内の一部コンテンツを装飾<ui:fragment> ページ内のフラグメントの追加<ui:include> <jsp:include>と同様<ui:insert> テンプレートにコンテンツを挿入<ui:param> インクルードしたファイルまたはテンプレートにパラメータを渡す<ui:repeat> <c:foreach>と同様<ui:remove> ページからコンテンツを削除12/05/30 Beginning JavaEE6 勉強会(4) 24
    25. 25. JavaServer FacesJavaServer Faces: ‣a user interface (UI) framework for Java web applications.[2] ‣下記以外のJSTLは未サポート ‣実例:htmlcomponents.xhtml(HTML components)FaceletsをPDLとして使用するページで使用可能なタグライブラリ [1] ※一部の説明を簡略化したURI 接頭辞 説明http://java.sun.com/jsf/html h このタグライブラリはコンポーネントとHTMLレンダラを含むhttp://java.sun.com/jsf/core f このライブラリは特定のレンダリングに依存しないカスタムアクショ ンを含むhttp://java.sun.com/jsf/facelets ui このライブラリのタグはテンプレート化のサポートを追加http://java.sun.com/jsf/composit composit このタグライブラリは複合コンポーネントの宣言と定義に使用http://java.sun.com/jsp/jstl/core c FaceletsページはJSPコアタグライブラリの一部を使用可能http://java.sun.com/jsp/jstl/functions fn Faceletsページは全てのJSP関数タグライブラリを使用可能12/05/30 Beginning JavaEE6 勉強会(4) 25
    26. 26. 第12章 処理と画面遷移12/05/30 Beginning JavaEE6 勉強会(4) 26
    27. 27. 【再掲】JSF(JavaServer Faces)とはJavaServer Faces (JSF) is a user interface (UI) framework for Java web applications. [2] HTTP リクエスト XUL ④ コンバータ ブラウザ (Ajax) ① ③ JSP コンバータ XHTML HTML ⑦ Faces レンダラ JavaScript Servlet CSS ② ⑤ HTTP バリデータ バリデータ レスポンス faces- ① マネージド config.xml (オプション) Bean ⑥[1] ※但し、赤文字は発表者が追記した12/05/30 Beginning JavaEE6 勉強会(4) 27
    28. 28. ①FacesServletjavax.faces.webapp.FacesServlet ‣JSFにおけるjavax.servlet.Servletの実装 ‣全てのユーザからのリクエストはこのコントローラを経由する FacesServletの相互作用 [1] Lifecycle 3: 6つのフェーズで利用する 2: 制御をライフサイクルに渡す FacesContext 1: FacesContextを生成する 画面の イベント FacesServlet ボタン12/05/30 Beginning JavaEE6 勉強会(4) 28
    29. 29. FacesContextjavax.faces.context.FacesContext ‣リクエストの処理と対応するレスポンスの作成に関連付けるコンテキス ト情報 ‣マネージドBeanでgetCurrentInstance()で取得できる FacesContextのメソッドの一部 [1] メソッド 説明 addMessage メッセージの追加 getApplication Webアプリケーションと関連付けられるApplicationインスタンスの取得 getAttributes FacesContextインスタンスと関連付けられる属性をMapで取得 getCurrentInstance 現在のスレッドが処理するリクエストのFacesContextインスタンスの取得 getELContext 現在のFacesContextインスタンスのELContextインスタンスの取得 getMaximumSeverity キューに登録されているFacesMessageの重要度の最大値を取得 getMessage FacesMessageコレクションの取得 getPartialViewContext リクエストのPartialViewContextオブジェクトの取得 getViewRoot リクエストに関連付けられているルートコンポーネントを取得 release FacesContextインスタンスに関連付けられるリソースの解放12/05/30 Beginning JavaEE6 勉強会(4) 29
    30. 30. JavaServer Facesページの6つのライフサイクル 利用者は 気にしない コンバータ レスポンス バリデータ レスポンス リクエスト ビュー 入力値 イベント 検証 イベント の復元 の適用 の処理 の処理 の処理 レスポンス レスポンス レスポンス レスポンスの イベント アプリの イベント モデル値 レンダリング の処理 呼出し の処理 の更新 コンバータ マネージドBean 利用者は 型変換または 気にしない 検証のエラー[1] ※赤文字は発表者が追記した JSFライフサイクルにおける6つのフェーズ [4]フェーズ名 説明ビューの復元 リクエストに基づいて、ページのUIViewRootコンポーネントツリーを作成(復元)する入力値の適用 送信されたフォーム値をUIコンポーネントに適応する検証処理 UIコンポーネントに関連付けられたバリデータ(データ検証)を行うモデル値の更新 入力の適用でUIコンポーネントと関連付けられた値をマネージドBeanに更新するアプリの呼出し マネージドBeanのイベントメソッドを起動し、ビジネスロジックを処理するレスポンスのレンダリング 処理結果をHTMLなどにレンダリングを行い、レスポンスとして返す12/05/30 Beginning JavaEE6 勉強会(4) 30
    31. 31. ④コンバータjavax.faces.convert.* ‣UIコンポーネントの値と対応するプリミティブ型を相互自動変換 ‣使い方: ‣<f:convertDataTime pattern=”MM/dd//yy”/> ‣実例:ex12/newBook.xhtml ‣プリミティブ型ではない場合、独自コンバータを作成する必要有 ➡カスタムコンバータというカスタムコンバータ ‣作り方:javax.faces.convert.Convertインターフェースを実装したク ラスに、@FacesConverterアノテーションを付与する ‣使い方:<f:converter converterId=”カスタムコンバータ名”/>12/05/30 Beginning JavaEE6 勉強会(4) 31
    32. 32. ⑤バリデータjavax.faces.validator.* ‣ユーザの入力を検証する ‣使い方:<f:validateLength minimum=”2” maximum=”20”/> ‣標準バリデータで満足できない場合、独自バリデータを作成する必要 有 ➡カスタムバリデータというカスタムバリデータ ‣作り方:javax.faces.validator.Validatorインターフェースを実装し たクラスに、@FacesValidatorアノテーションを付与する ‣使い方:<f:validator validatorId=”カスタムバリデータ名”/>12/05/30 Beginning JavaEE6 勉強会(4) 32
    33. 33. Exercise③|発行日の追加とタイトルの文字数チェック目的:コンバータとバリデータの使い方を把握する課題:書籍情報に「発行日」を追加し、「タイトル」が2文字以上20文字以下チェック を追加する手順:Exercise②の結果のソースに以下を実施 1.BookエンティティへのDate型の「発行日」追加 ‣「@Temporal」の付与不足を忘れずに 2.BookEJB, BookControllerマネージドBeanの確認 3.newBook.xhtml, listBooks.xhtmlへの「発行日」追加 4.newBook.xhtmlへの標準コンバータ「convertDateTime」タグの追加 ‣htmlタグ内に「xmlns:f="http://java.sun.com/jsf/core"」追加 5.newBook.xhtmlへの標準バリデータ「validateLength」タグの追加12/05/30 Beginning JavaEE6 勉強会(4) 33
    34. 34. ⑥マネージドBean作り方: ‣@ManagedBeanアノテーションをクラスに付与 ‣JSF1.2まではfaces-config.xmlへのエントリが必要だった役割: ‣状態の保持�book属性 ‣ページで参照するアクションメソッドの定義�doCreateBook() ‣画面遷移�return “listBooks.xhtml”必要条件: ‣スコープの設定が必要。設定しないと@RequestScopeを使用 ‣クラスをpublicとして定義。finalやabstractの定義は不可 ‣クラスは引数なしのパブリックコンストラクタが必要 ‣クラス中でfinalize()メソッドの定義は不可 ‣属性はパブリックのゲッター、セッターが必要12/05/30 Beginning JavaEE6 勉強会(4) 34
    35. 35. ⑦Ajax概要:JSF2.0からAjaxが標準仕様になった使い方: ‣準備:標準仕様で定義されたJavaScriptライブラリ(jsf.js)を使用 ‣<h:outputScript name=”jsf.js” library=”javax.faces” target=”head”/> ‣使用したいタグ内で<f:ajax>タグを使用する ‣<f:ajax execute=”@form” render=”:bookList”/>‣実例:Chapter12/ex14/newBook.xhtml12/05/30 Beginning JavaEE6 勉強会(4) 35
    36. 36. Exercise④|書籍情報を非同期で表示する機能目的:マネージドBeanとAjaxの使い方を把握する課題:書籍情報を非同期で表示する機能を追加する手順:Exercise③の結果のソースに以下を実施 1.newBook.xhtmlに非同期で表示する機能を追加 ‣listBooks.xhtmlから必要部分をコピペ ‣ボタンタグ内に<f:ajax>タグを追加 ‣renderとid 2.BookController.javaの遷移先を変更12/05/30 Beginning JavaEE6 勉強会(4) 36
    37. 37. 引用文献[1] Antonio Goncalves 著, 日本オラクル株式会社 監訳「Beginning Java EE 6」2012年, 翔泳社[2] Java Community Process「JSR-000314 JavaServerTM Faces 2.0(Final Release)」http:// jcp.org/aboutJava/communityprocess/final/jsr314/index.html[3] 佐藤治夫, 小泉守義 「ThinkIT JDeveloperで学ぶJSF入門 第2回:JSFを構成する要素」http:// thinkit.co.jp/free/article/0607/8/2/[4] Syboos.jp編集長 「ライフサイクルから理解するJSFの仕組み」 http://www.syboos.jp/jsf/doc/ phase-in-lifecycle.html12/05/30 Beginning JavaEE6 勉強会(4) 37
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×