Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Strutsから
移行する人のための
JSF基礎
@megascus
#html5biz #jjug
13年9月9日月曜日
自己紹介
• 久保智(@megascus)
• グロースエクスパートナーズ所属/JJUG幹事
• 業務系SE
13年9月9日月曜日
注意
13年9月9日月曜日
HTML5とか出てきません
ごめんなさい!
13年9月9日月曜日
Java EE6(JSF2.0)の範囲です
Java EE 7?なんのことです?
13年9月9日月曜日
Java EE 7(JSF2.2)
の話が聞きたい人は
13年9月9日月曜日
11/9のJJUG CCCへ!
(@den2snさんよろしく!)
13年9月9日月曜日
Struts2 is not Struts
13年9月9日月曜日
JSFの概要
13年9月9日月曜日
JSFとは何か
13年9月9日月曜日
JSFとは何か
• 2004年にv1.0がリリースされた
• Strutsのメイン開発者が仕様策定に参加
• Java EE 5からJava EEの標準UIフレームワークに
13年9月9日月曜日
なぜJSFか
13年9月9日月曜日
なぜJSFか
• Ajaxの使用を前提に設計されているため、リッチなUIを
作りやすい
• Strutsと骨子が似ているため、要素だけ理解していれば
Strutsから移行しやすい
• Java EEの標準のためベンダーのサポートを受けやすい
1...
JSFで作成できるUI
13年9月9日月曜日
JavaScriptレスな
Ajaxを使用したUI
13年9月9日月曜日
JavaScriptレスな
Ajaxを使用したUI
Ajaxを使用した
エラーメッセージの表示
13年9月9日月曜日
JavaScriptレスな
Ajaxを使用したUI
<h:inputText id="startedDate" value="#{someBean.startDate}" required="true" >
<f:convertDateTime...
もっとリッチなUIを作りたい
13年9月9日月曜日
JSFの拡張ライブラリを使う
13年9月9日月曜日
JSFの拡張ライブラリを使う
•Prime Faces
•Rich Faces
•Ice Facesその他(都合により省略)
13年9月9日月曜日
Prime Faces
13年9月9日月曜日
Prime Faces
• トルコのPrimeTechnology社が開発しているOSSのライブ
ラリ
• 日本だと @kikutaro_ さんが一番詳しいのでブログを参
照して下さい。
http://kikutaro777.hatenablo...
詳しくはデモを見て下さい
http://www.primefaces.org/showcase/ui/home.jsf
13年9月9日月曜日
Rich Faces
13年9月9日月曜日
Rich Faces
• JBossが開発しているOSSのライブラリ
• 前はAjax4Jsfと呼ばれていた
• 日本ではオープンに情報発信をしている人はいないけ
ど、オープン度ではPrime Facesより上
13年9月9日月曜日
詳しくはデモを見て下さい
http://livedemo.exadel.com/richfaces-demo/
13年9月9日月曜日
JSFの拡張ライブラリを
使用する上での注意
13年9月9日月曜日
JSFの拡張ライブラリを
使用する上での注意
• 基本的に最新版のブラウザしかサポートしない(素のJSF
だとIE8ぐらいから動くのですが)
• ブラウザの最新化をがんばりましょう
13年9月9日月曜日
JSFの構成要素
13年9月9日月曜日
Strutsの頃はこんな感じでした
13年9月9日月曜日
Strutsの構成要素
• Action、ActionForm
• JSP+タグライブラリ(jstl、struts-tags)
• commons-validator(入力値の検証)
• Struts-tiles(UIの部品化)
• Reque...
Struts→JSF
• Action、ActionForm→managed-bean
• JSP+タグライブラリ→XHTML+タグライブラリ
• commons-validator→JSFValidator+BeanValidator
• S...
managed-bean
13年9月9日月曜日
managed-bean
• StrutsではActionFormとActionとで分かれていた入力値と
処理をJSFでは一つにまとめて記述できるようになった
• Strutsではxmlでしか定義できなかったものがJSFではxml
に加えてアノ...
アノテーションベースの
managed-beanの例
@Named("someBean")//動かない場合は@ManagedBean
@SessionScoped
public class SomeBean implements Seriali...
XHTML+タグライブラリ
13年9月9日月曜日
XHTML+タグライブラリ
<h:form>
<h:inputText id="id" value="#{someBean.id}" />
<h:commandLink action="#{someBean.execute}"
value="b...
XHTML+タグライブラリ
• JSPと違いServletには変換されなくなった
• エラーが発生した時にスタックトレースにXHTMLの行
番号がそのまま出るのでエラーを追いやすい
13年9月9日月曜日
JSFValidator + BeanValidator
13年9月9日月曜日
JSFValidator + BeanValidator
• バリデーション定義を画面に直接記載するJSFValidator
• バリデーション定義をプロパティに直接記載するBean
Validator
• 定義と実際に使う場所が近くなりました...
JSFValidator
<h:inputText id="name" value="#{someBean.name}"
required="true"
requiredMessage= "name is required."
validato...
JSFValidator
public void validate(FacesContext context,
UIComponent component,
Object newValue) {
// some error check.
if ...
BeanValidator
@NotNull
@Size(min=0, max=8)
private String name;
アノテーションベースのエラーチェック
13年9月9日月曜日
ui composition
13年9月9日月曜日
ui composition
• いわゆるテンプレート機能
• 特に珍しい機能でもないので省略
13年9月9日月曜日
Phase Listener
13年9月9日月曜日
Phase Listener
• StrutsのRequestProcesserのprocessXXXXという名前で定
義されていたメソッドがそれぞれ別のクラスになった
• Phaseそのもののカスタマイズや前後に処理を挟むこと
が可能
• S...
Phase Listener
• PhaseListenerクラスをimplimentsする形で作成
• フレームワーク作成時にしか作らないと思うので省略
13年9月9日月曜日
JSF利用時の注意
13年9月9日月曜日
JSF利用時の注意
• JSF1.X(Java EE5以前)とJSF2.X(Java EE6以降)は別物
• JSF1.Xを使うぐらいだったらStrutsの方がマシ
※個人の感想です
13年9月9日月曜日
補足
デザイナーさんとの
協業向けの機能
13年9月9日月曜日
XHTMLにjsfcタグを
埋め込むことで動作可能に
<form jsfc="h:form">
名前を入力してください。
<input type="text" jsfc="h:inputText"
value="#{someBean.name}...
最後に
業務系SEからの2つのお願い
13年9月9日月曜日
独自のセッション管理機能は
作らないで下さい
• 昨今のフレームワークはリッチなユーザーインター
フェースを実現するためにセッション機能を多用する
• 自前でセッションの永続化をするだけだと万が一の時
にフレームワーク部分の復元ができない
• ...
メモリを大量に積んで下さい
• リッチなUIを実現するために、フレームワークがセッ
ションにデータをたくさん持ちます
• セッションにデータを持つのは業務情報だけじゃない
• Struts時代の2倍から10倍ぐらい積むのがオススメ
13年9月9...
以上
13年9月9日月曜日
とみせかけて
おまけ
13年9月9日月曜日
13年9月9日月曜日
Strutsじゃない
ネタが必要?
13年9月9日月曜日
Scalaか!
13年9月9日月曜日
JSFをScalaで
13年9月9日月曜日
去年のネタ
Java EE 6 With Scala
http://d.hatena.ne.jp/megascus/20121118/1353234678
13年9月9日月曜日
ふつーに動きます
(面白みがないぐらい)
13年9月9日月曜日
感想
13年9月9日月曜日
便利です。
13年9月9日月曜日
良い感想は次の方々が説明し
てくれると思うので
13年9月9日月曜日
悪い感想
13年9月9日月曜日
ScalaからJavaを使う
• Scala自体が互換性を気にしていないため、バージョン
アップで動かなくなることが多い
ScalaとJavaでList(Collection)のClassの互換性が無いため、
ScalaからJavaのライブラリ...
そんな感じで
13年9月9日月曜日
ありがとうございました
Groovyのこと忘れないで下さい
13年9月9日月曜日
Upcoming SlideShare
Loading in …5
×

Strutsから移行する人のためのjsf基礎

14,999 views

Published on

2013/9/9に発表した内容です。 #html5biz #jjug

Published in: Technology
  • Dating for everyone is here: ❤❤❤ http://bit.ly/39pMlLF ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Follow the link, new dating source: ♥♥♥ http://bit.ly/39pMlLF ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Strutsから移行する人のためのjsf基礎

  1. 1. Strutsから 移行する人のための JSF基礎 @megascus #html5biz #jjug 13年9月9日月曜日
  2. 2. 自己紹介 • 久保智(@megascus) • グロースエクスパートナーズ所属/JJUG幹事 • 業務系SE 13年9月9日月曜日
  3. 3. 注意 13年9月9日月曜日
  4. 4. HTML5とか出てきません ごめんなさい! 13年9月9日月曜日
  5. 5. Java EE6(JSF2.0)の範囲です Java EE 7?なんのことです? 13年9月9日月曜日
  6. 6. Java EE 7(JSF2.2) の話が聞きたい人は 13年9月9日月曜日
  7. 7. 11/9のJJUG CCCへ! (@den2snさんよろしく!) 13年9月9日月曜日
  8. 8. Struts2 is not Struts 13年9月9日月曜日
  9. 9. JSFの概要 13年9月9日月曜日
  10. 10. JSFとは何か 13年9月9日月曜日
  11. 11. JSFとは何か • 2004年にv1.0がリリースされた • Strutsのメイン開発者が仕様策定に参加 • Java EE 5からJava EEの標準UIフレームワークに 13年9月9日月曜日
  12. 12. なぜJSFか 13年9月9日月曜日
  13. 13. なぜJSFか • Ajaxの使用を前提に設計されているため、リッチなUIを 作りやすい • Strutsと骨子が似ているため、要素だけ理解していれば Strutsから移行しやすい • Java EEの標準のためベンダーのサポートを受けやすい 13年9月9日月曜日
  14. 14. JSFで作成できるUI 13年9月9日月曜日
  15. 15. JavaScriptレスな Ajaxを使用したUI 13年9月9日月曜日
  16. 16. JavaScriptレスな Ajaxを使用したUI Ajaxを使用した エラーメッセージの表示 13年9月9日月曜日
  17. 17. JavaScriptレスな Ajaxを使用したUI <h:inputText id="startedDate" value="#{someBean.startDate}" required="true" > <f:convertDateTime pattern="yyyy/MM/dd" /> <f:ajax event="blur" render="startedDateError" /> </h:inputText> <h:message id="startedDateError" for="startedDate" styleClass="errorMessage"/> f:ajaxによる部分描画変更のサポート 13年9月9日月曜日
  18. 18. もっとリッチなUIを作りたい 13年9月9日月曜日
  19. 19. JSFの拡張ライブラリを使う 13年9月9日月曜日
  20. 20. JSFの拡張ライブラリを使う •Prime Faces •Rich Faces •Ice Facesその他(都合により省略) 13年9月9日月曜日
  21. 21. Prime Faces 13年9月9日月曜日
  22. 22. Prime Faces • トルコのPrimeTechnology社が開発しているOSSのライブ ラリ • 日本だと @kikutaro_ さんが一番詳しいのでブログを参 照して下さい。 http://kikutaro777.hatenablog.com/ 13年9月9日月曜日
  23. 23. 詳しくはデモを見て下さい http://www.primefaces.org/showcase/ui/home.jsf 13年9月9日月曜日
  24. 24. Rich Faces 13年9月9日月曜日
  25. 25. Rich Faces • JBossが開発しているOSSのライブラリ • 前はAjax4Jsfと呼ばれていた • 日本ではオープンに情報発信をしている人はいないけ ど、オープン度ではPrime Facesより上 13年9月9日月曜日
  26. 26. 詳しくはデモを見て下さい http://livedemo.exadel.com/richfaces-demo/ 13年9月9日月曜日
  27. 27. JSFの拡張ライブラリを 使用する上での注意 13年9月9日月曜日
  28. 28. JSFの拡張ライブラリを 使用する上での注意 • 基本的に最新版のブラウザしかサポートしない(素のJSF だとIE8ぐらいから動くのですが) • ブラウザの最新化をがんばりましょう 13年9月9日月曜日
  29. 29. JSFの構成要素 13年9月9日月曜日
  30. 30. Strutsの頃はこんな感じでした 13年9月9日月曜日
  31. 31. Strutsの構成要素 • Action、ActionForm • JSP+タグライブラリ(jstl、struts-tags) • commons-validator(入力値の検証) • Struts-tiles(UIの部品化) • RequestProcesser 13年9月9日月曜日
  32. 32. Struts→JSF • Action、ActionForm→managed-bean • JSP+タグライブラリ→XHTML+タグライブラリ • commons-validator→JSFValidator+BeanValidator • Struts-tiles→ui composition • RequestProcesser→Phase Listener 13年9月9日月曜日
  33. 33. managed-bean 13年9月9日月曜日
  34. 34. managed-bean • StrutsではActionFormとActionとで分かれていた入力値と 処理をJSFでは一つにまとめて記述できるようになった • Strutsではxmlでしか定義できなかったものがJSFではxml に加えてアノテーションでも定義できるようになった 13年9月9日月曜日
  35. 35. アノテーションベースの managed-beanの例 @Named("someBean")//動かない場合は@ManagedBean @SessionScoped public class SomeBean implements Serializable { public String execute() { //do something.... } 13年9月9日月曜日
  36. 36. XHTML+タグライブラリ 13年9月9日月曜日
  37. 37. XHTML+タグライブラリ <h:form> <h:inputText id="id" value="#{someBean.id}" /> <h:commandLink action="#{someBean.execute}" value="button" /> </h:form> 13年9月9日月曜日
  38. 38. XHTML+タグライブラリ • JSPと違いServletには変換されなくなった • エラーが発生した時にスタックトレースにXHTMLの行 番号がそのまま出るのでエラーを追いやすい 13年9月9日月曜日
  39. 39. JSFValidator + BeanValidator 13年9月9日月曜日
  40. 40. JSFValidator + BeanValidator • バリデーション定義を画面に直接記載するJSFValidator • バリデーション定義をプロパティに直接記載するBean Validator • 定義と実際に使う場所が近くなりました 13年9月9日月曜日
  41. 41. JSFValidator <h:inputText id="name" value="#{someBean.name}" required="true" requiredMessage= "name is required." validator="#{someBean.valid}" label= "message" > 13年9月9日月曜日
  42. 42. JSFValidator public void validate(FacesContext context, UIComponent component, Object newValue) { // some error check. if (hasError) { throw new ValidatorException("error message."); } } 13年9月9日月曜日
  43. 43. BeanValidator @NotNull @Size(min=0, max=8) private String name; アノテーションベースのエラーチェック 13年9月9日月曜日
  44. 44. ui composition 13年9月9日月曜日
  45. 45. ui composition • いわゆるテンプレート機能 • 特に珍しい機能でもないので省略 13年9月9日月曜日
  46. 46. Phase Listener 13年9月9日月曜日
  47. 47. Phase Listener • StrutsのRequestProcesserのprocessXXXXという名前で定 義されていたメソッドがそれぞれ別のクラスになった • Phaseそのもののカスタマイズや前後に処理を挟むこと が可能 • Strutsに比べて拡張しやすくなった 13年9月9日月曜日
  48. 48. Phase Listener • PhaseListenerクラスをimplimentsする形で作成 • フレームワーク作成時にしか作らないと思うので省略 13年9月9日月曜日
  49. 49. JSF利用時の注意 13年9月9日月曜日
  50. 50. JSF利用時の注意 • JSF1.X(Java EE5以前)とJSF2.X(Java EE6以降)は別物 • JSF1.Xを使うぐらいだったらStrutsの方がマシ ※個人の感想です 13年9月9日月曜日
  51. 51. 補足 デザイナーさんとの 協業向けの機能 13年9月9日月曜日
  52. 52. XHTMLにjsfcタグを 埋め込むことで動作可能に <form jsfc="h:form"> 名前を入力してください。 <input type="text" jsfc="h:inputText" value="#{someBean.name}"/> <input type="submit" jsfc="h:commandButton" value="実行" action="#{someBean.execute}"/> </form> 13年9月9日月曜日
  53. 53. 最後に 業務系SEからの2つのお願い 13年9月9日月曜日
  54. 54. 独自のセッション管理機能は 作らないで下さい • 昨今のフレームワークはリッチなユーザーインター フェースを実現するためにセッション機能を多用する • 自前でセッションの永続化をするだけだと万が一の時 にフレームワーク部分の復元ができない • 仮に作るならAPサーバーと統合して下さい 13年9月9日月曜日
  55. 55. メモリを大量に積んで下さい • リッチなUIを実現するために、フレームワークがセッ ションにデータをたくさん持ちます • セッションにデータを持つのは業務情報だけじゃない • Struts時代の2倍から10倍ぐらい積むのがオススメ 13年9月9日月曜日
  56. 56. 以上 13年9月9日月曜日
  57. 57. とみせかけて おまけ 13年9月9日月曜日
  58. 58. 13年9月9日月曜日
  59. 59. Strutsじゃない ネタが必要? 13年9月9日月曜日
  60. 60. Scalaか! 13年9月9日月曜日
  61. 61. JSFをScalaで 13年9月9日月曜日
  62. 62. 去年のネタ Java EE 6 With Scala http://d.hatena.ne.jp/megascus/20121118/1353234678 13年9月9日月曜日
  63. 63. ふつーに動きます (面白みがないぐらい) 13年9月9日月曜日
  64. 64. 感想 13年9月9日月曜日
  65. 65. 便利です。 13年9月9日月曜日
  66. 66. 良い感想は次の方々が説明し てくれると思うので 13年9月9日月曜日
  67. 67. 悪い感想 13年9月9日月曜日
  68. 68. ScalaからJavaを使う • Scala自体が互換性を気にしていないため、バージョン アップで動かなくなることが多い ScalaとJavaでList(Collection)のClassの互換性が無いため、 ScalaからJavaのライブラリを扱うのはそれなりに工数が かかる 13年9月9日月曜日
  69. 69. そんな感じで 13年9月9日月曜日
  70. 70. ありがとうございました Groovyのこと忘れないで下さい 13年9月9日月曜日

×