[HOME]

「JavaServer Faces完全ガイド」フォローアップ

updated 21 Sep. 2006([Ajax for JSFに関するMax Katz氏インタビュー])

なんといっても、いちばんの注目話題はFaceletですね。
主な話題
AJAX正誤表FaceletRailsRubyJSCGalileo
WebFlowJSF 1.2selectBooleanCheckboxShale
Adam WinerCommons ChainWML Renderkit比較論
SpringClient Side ValidationResinくたばれJSP
vs.StrutsOracle ADFSelected Links

28. 2006年TSS最新記事より(060125) 1. JSFとBeehive Page Flowとの統合化 Integrating JavaServer Faces with Beehive Page Flow 060116 原文記事 TSS記事 2. Oracle ADF Facesがオープンソース化されました Oracle ADF Faces Goes Open Source 060125 TSS紹介記事 Oracle ADFサイト 3. 新年最新の「JSFいじめ」記事 (原文よりも、TSS(The Server Side)における反響記事のほうが、たいへん おもしろいです。) Tim Shadel says JSF isn't their choice for the future 060125 blog原文 TSS読者反響記事
27. 最近犯したバグからの教訓(051019) JSFコンポーネントのvalueに値結合されているビーンのプロパティの値を ヴァリューチェンジリスナメソッドの中で(セッターメソッドを呼び出すな どして)更新することは無効です。なぜならヴァリューチェンジリスナメソ ッドは通常「検査処理段階」で呼ばれますが、ビーンのプロパティの値はそ のあとの「モデルの値更新段階」でコンポーネントの値にセットされるから です。したがってヴァリューチェンジリスナメソッドが行う処理としてビー ンのプロパティの値とコンポーネントの値を正しく更新するためには、コン ポーネントのsetValue()メソッドを呼び出す必要があります。 なお、この方法を前提として「モデルの値更新段階」が確実に実行されるた めには、そのヴァリューチェンジリスナメソッドをメソッド結合しているコ ンポーネントのimmediate属性の値がtrueであってはいけません。
26. JSFのAJAX対応化(050923, 25, 28, 1019, 1118) Exadel社Max Katz氏「Ajax for JavaServer Facesに関するインタビュー」を抄訳(060921) 前回セーブしたステート情報に基づいてビューの全体を再送信再描画するJSFのよう なフレームワークと、クライアントサイドでビューを部分的に変えてしまうことも あるAJAX(Asynchronous JavaScript and XML)との相性の悪さが、懸念され ています: AJAXを斬る(051208) --Webの今後のテクノロジをめぐって、いろいろ高度な研究開発が行われているのに、 いまどきこんな古くさいチャチい技術がもてはやされるのはなんじゃらほい、と論じ ています。 [関連記事:Ajaxの間違い] AJAXで従来のWebフレームワークは要らなくなる?(051118) [TSS記事] Does JSF + AJAX really make sense?(Alexander Jerusalem) これに対して、Faceletの作者であるJacob Hookom氏が「JSFのViewHandlerを AJAX対応にすることは難しくない」と、自らの試作&ベンチマーク体験を述べて います: JSF Avatar vs. MS Atlas(Jacob Hookom) ●JSF vs. AJAX関連リンク AJAX with J2EE(Sunの基本ドキュメント集) JSFコンポーネントのAJAX対応化 JavaServer Faces and AJAX(リンク集) AjaxFaces(商用製品の例) Apache MyFaces(一部のコンポーネントがAJAXを内部的に使用) Updated AJAX-focused Java BluePrints Solutions Catalog for JSF(060211) [TSS記事] ●AJAX資料集 Wikipedia解説文 AJAX入門(mozilla.org)(日本語訳あり) --この入門記事は、シンプルで分かりやすいのでおすすめです。 AJAX入門(IBM) --この入門記事は、作例が実用アプリ的(ショッピングカート)なので、上の入門 記事の次に読むとよいでしょう。Tomcatなどの上で、即実行できます。 DWR(WebアプリをAJAX対応化するためのJava/JavaScriptライブラリ) Echo2(AJAXベースのWebアプリ開発フレームワーク-JavaScript, XML知識不要) 書籍:Ajax in Action(サンプル) AJAX Renderer for JSF(051019) Creating and Using a Custom Render Kit: SVGをFORMとしてsubmitする(051009) AJAX: How to Handle Bookmarks and Back Buttons + [TSS記事](051028) Developing Ajax Applications That Preserve the Back Button(060128) [TSS記事] Ajax in Action, Managing Events and the Model + [TSS記事](051028)--書籍抜粋 ---------------- #そのほかの注目リンク (1)JSFにアノテーションを導入?! TSS記事 Duncan Mills氏 JSF Spec Lead, Ed Burns氏 (2)マネージドビーンの“多態化” TSS記事 オリジナル記事 by Daniel Hinojosa氏 (3)David Geary氏のブログより: StrutsよりもJSFが良い理由トップ10
25. 正誤表(050918, 22, 1013) (051019) p647右下14, 648左13 14 25 25 右9, 649左15 16, 651左下14, 653左3 17 18 21 32 34 40, 654左下17 19 右1 2 14 15 16 18, 655右下11, 656左下13 [誤]WEB-INFファイル [正]web.xmlファイル p366 : 15-16 [誤]付録Bを見よ [正]付録Cを見よ 索引追加: [A] Action, Strutsの...........255 ActionForm, Strutsの.......255 [I] immediate属性..............168-169 [R] Resolver...................299 訳注追加: p163 : 原著者脚注に対する訳注: ‡訳者注:faces-config.xmlファイル中の<application>成文の<action-listener>サブ成分で指定します。 --end1019---------------------------------------------------- p149下から150にかけての、リスト7-6のタイトルにあるTLDAは、正しくはTLDです。 p366 : 4 (050922) [誤]hLoutputText [正]h:outputText p577 : ValueChangeListenerの項 [誤]インタフェイス名: javax.faces.event.ActionListener [正]インタフェイス名: javax.faces.event.ValueChangeListener p653左:13 (<lifecycle>成分の項) [誤] .................................607 [正] .................................608 p653左:下16 (<managed-bean>成分の項) [誤] .................................607 [正] .................................609 (051013) p306:下19行 [誤]14章で作ったレンダラのクラス [正]13章で作ったレンダラのクラス p307: 16行 ... このソースは本書の上にはありません。 [誤]あとでそのソースコードを、じっくりご覧ください [正]あとでそのソースコード(/src/com/mycompany/jsf/taglib/PanelTabbedTag.java) を、じっくりご覧ください p630: 下10行 ... インデント(字下げ)の間違い [誤] </error-page> [正]</error-page> ---(これは正誤表の一部ではありません)----------------------------------- p130:12行 【本文】 そうやって、各コンポーネントが自分の値を手元に持ったら、JSFはコンポーネント のvalidate()メソッドを呼んで値を検査します。 (ここは誤解を招きそうな箇所なので、解説をがんばって書きました。) 【解説】
24. Facelet (050819, 0825, 26, 0901, 13, 23) いよいよ、JSPとWebコンテナ(サーブレット/JSPエンジン)に依存しない、完全にJSFが 主役の、テンプレートエンジンが登場しました。それが、Faceletです: ●開発者によるデベロッパドキュメンテーション [日本語訳] ●開発者による入門記事 Inside Facelets Part 1: An Introduction by Jacob Hookom (抄訳) 連載第二回 (抄訳) 連載第三回 (抄訳) ●関連リンク [FaceletsはJSFにぴったりのグローブだ]by Rick Hightower(060226) IBM自身による日本語訳   [反響集(1)]   [反響集(2)]   [筆者のblog] [高度なFaceletsプログラミング(カスタムロジックタグとELファンクションを作る)]by Rick Hightower(060608) Facelets 0.8 released, competing with Tapestry in the JSF world Facelet HP Wikiページ [ダウンロード]---050923最新=v.1.0 (?) (デモプログラムの使い方はwarファイルをTomcatなどのwebappsディレクトリに 放り込むだけです。hangmanはhangman/home.jsfがスタートページです。そのほ かのファイルをダウンロードする必要はありません。) [ドキュメンテーション] ●TapestryとJSFの比較論(050826) JavaServer Faces vs Tapestry - A Head-to-Head Comparison TSS Forum ●Sergey Smirnof氏のExadel Studio ProがFaceletをサポート(050913) 製品 Faceletサポート解説 ---------------------- (そのほかのJSF関連ページ) Building Custom JSF UI Components by Chris Schalk (感想/議論)
23. Rails, Trails, MonoRails, and, JSF Railsというフレームワークが注目を集めています。Rubyがベース言語なので、Ruby on Rails, 略してRoRとも呼ばれます。 ・RoRホームページ Ruby on Rails ・チュートリアル Rolling with Ruby on Rails(Curt Hibbs 01/20/2005) ・David Geary氏絶賛:「ゼロ時間開発が可能だ!」 Ruby on Rails Koolaid, Redux(David Geary, 25 Jul. 2005) ・Java勢反論 Zero Turnaround Time: the crucial flaw?(Joseph Ottinger on July 28, 2005, TheServerSide.com) ・Java版Rails ?? Trails [Trails解説/チュートリアル](23 Jun. 2005) ・RoRがShale/JSFに影響を与える Ruby and Bruce Tate ---------------------------------------------------------------------------- ・3時間あればできるRubyチュートリアル Rubyは、クラスの構成やメソッドの定義をランタイムに変えられる、メソッドや単 なるコードブロックを別メソッドの引数や返し値にできる、など、Javaと違って“む き出しの切れ味の良いナイフ”(ある意味、Cのポインタに似ている)のような部分を 持つ、魅惑的誘惑的な言語です。君子危うきに近寄ってみたいかたには、まずこの、 良質なチュートリアルをお勧めします: プログラミング入門-Rubyを使って ----------------------------------------------------------------------------
22. 最近の注目リンクより Java Studio Creator試用体験記(Jul. 09, 2005)[JSCによる開発過程のデモ] A Proposal for Design-Time Metadata for Java Server Faces Components(Jun. 16, 2005) iJavaServer Faces Presentation by Craig R. McClanahan JavaServer Faces: Dead on Arrival or Raging Success? M7 Announces NitroX JSF IDE(May 27, 2005) Threaded replies(Java Studio Creatorとの比較など) Craig McClanahan on JSF(May 25, 2005) WebGalileo Faces 2.0 - JSF components released(May 23, 2005)
21. JSF + Spring Web Flow + Shale 最近、Springフレームワークの関連技術であるSpring Web Flow が高い関心を集めています。それは、通常、forwardでつながれる request→action→view .....の流れ、すなわちフロー(flow)を、 再利用できるモジュールとしてカプセル化する技術です。 Strutsの作者であり、JSFの規格策定リーダー(spec lead)でもあるCraig McClanahan 氏はSpring Web Flowのすばらしさにいち早く目をつけ、JSFと、次世代Strutsとも呼ば れるShaleと、Spring Web Flow三者の統合化を、提唱しました。 この発表に対して、Webデベロッパたちの反応・反響も、熱を帯びています。 Spring Web Flowのドキュメンテーションを中心として、関連のドキュメンテーションを 訳してみたいと思っているのですが、どうでしょう、みなさまのご関心やニーズは? 作者たちが書いた記事:Spring Web Flowの使い方

20. JSF 1.2 & JSP 2.1 公開検討仕様(Public Review Specifications) JSF 1.2(0508:Proposed Final Draft..最終草案) JSP 2.1 Ed Burns氏のBlog The ServerSideにおける読者感想集 JSF 1.2の目玉: ・ELの統一(#{}と${}の両方をJSF/JSP双方で使える)。 ・JSPとの相性の悪さを解消。 ・JSFの入力コンポーネントをJSTLの<c:forEach>の中で使える。 ・ブラウザのBack-button(戻るボタン)でJSFが混乱する問題を解消。 ・任意のコンポーネントに任意のメッセージラベルを付けられる。 JSP 2.1の目玉: ・trimWhiteSpacesディレクティブを導入。JSPの中に“複雑高度な”Javaコードを 安心して書きやすくなる??。
19. 訂正 p149下から150にかけての、リスト7-6のタイトルにあるTLDAは、正しくはTLDです。 おまけリンク: ・企業におけるJSfの本格採用例 http://www.theserverside.com/news/thread.tss?thread_id=32318 http://www.jsfcentral.com/trenches/trenches_2.html
18. 眉に唾をつけてJSFを見ている人びとのために Professional Strutsの著者Rick Hightower氏による連載記事 (JSFによる開発がStrutsに比べて超簡単である、と例示します。) JSF for nonbelievers: Clearing the FUD about JSF この記事をめぐる議論
17. selectBooleanCheckboxにテキストラベルを付ける方法 以下は、Hansとの最近のメールです: > How to set label text for a selectBooleanCheckbox? > > Aren't there text or label attribute yet for that component? You can use the <h:outputLabel> action for any input component, including <h:selectBooleanCheckbox>: <h:selectBooleanCheckbox id="myCheckbox" ... /> <h:outputLabel for="myCheckbox" value="Some choice:" /> Or just plain template text: Some choice: <h:selectBooleanCheckbox id="myCheckbox" ... /> ### OracleのADFのselectBooleanCheckboxは、属性でラベルテキストを指定できるんですよ。
16. Struts 2.0はJSFがベースになる コードネームShaleの話がネット上 で増えています。 私は、Strutsを抜きにした、JSFオンリーの開発で十分であり、ずっと楽であり、 簡単である、と信じます。このページの「18.」のリンク先を、 読んでみましょう。
15. Adam Winerが語るJSFの未来 The ServerSideよりの勝手な翻訳です。 オリジナルはここです。 Oracle ADF Faces Early Access(May 2005)
14. JSFとApache Commons Chain http://www.theserverside.com/news/thread.tss?thread_id=31030 [コードサンプル] David Geary氏のWeblog記事です。 バッキングビーン(グルービーン, 「JavaServer Faces完全ガイド」p114)を単純化し、 背後のアプリケーションロジックと非結合化できる、と絶賛しています。
13. RenderKit for WML Apache MyFacesの開発チームより。 http://www.theserverside.com/news/thread.tss?thread_id=30859
12. JSF 1.2 with JSP 2.1 (仕様:初期草案) http://www.theserverside.com/news/thread.tss?thread_id=30505 最大の目玉は、JSFとJSPのELが統一されたことです。JSPだけのページから、JSFのマ ネージドビーンのプロパティにアクセスする、などが可能になります。
11. メジャーなWebフレームワークの比較 これは、けっこう現実的で良識的な議論と思われます。 簡潔なPDF文書です: http://equinox.dev.java.net/framework-comparison/WebFrameworks.pdf TheServerSide上の読者反応集(Kito Man氏の投稿もあり): http://www.theserverside.com/news/thread.tss?thread_id=29817
10. JSF vs. Strutsを充実
9. JSF-Spring統合化ライブラリ JSF-Spring 2.6 ・カスタムVariableResolverを提供, JFSから直接、Springのビーンにアクセス可能。 ・JSFのマネージドビーンをSpringのコンテキストに統合化、相互乗り入れを可能に。 [関連情報] 例によって、ServerSide上の読者の意見感想がおもしろいです。 SwingなどのGUIアプリケーションを手がけていた人びとは、JSFを「生産性が高い」と実感するようですね。 ---------- ●JSF + Spring + Hibernateによるサンプルアプリケーション (この作例は、上記のライブラリを使っていません。)
8.1.1参考実装デバッグバージョン Maintenance release of JSF 1.1 バージョン番号は1.1.01となっています。 詳しい内容はリリースノートに書かれています。
7.Java Studio Creatorを使ったJSF開発(デモ) Touring JSF on Java Studio Creator 短くて画面写真(スクリーンショット)のたいへん多い、分かりやすいチュートリアルです。
1.JavaServer Faces 1.2 & 2.0 http://www.theserverside.com/news/thread.tss?thread_id=28419 (いずれも、実装系はまだです -- 040903現在) [JSR 252] JSR 252: JavaServer Faces 1.2
2. クライアントサイドヴァリデーションはどうなった? What happend to JSF client side validation? Hans, This is a quote from original JSR-127: >> The following 8 design goals represent the focus of this proposal: >> .... >> 5. Define APIs for input validation, including support for client-side validation. Spec lead is credited as Amy Fowler! I'd like to ask: what is the current status for the JSF client-side validation component or API? Could we get a ready-made somewhere? -- Hiroshi Iwatani --------------------------------- Hiroshi, > This is a quote from original JSR-127: >> The following 8 design goals represent the focus of this proposal: >> 5. Define APIs for input validation, including support for client-side validation. > > Spec lead is credited as Amy Fowler! > I'd like to ask: what is the current status for the JSF client-side validation > component or API? > Could we get a ready-made somewhere? Amy was the original spec lead, turning it over to Craig due to lack of time. There wasn't enough time to get proper client-side validation support into JSF 1.0, but it will likely be added in a future release. For now, you need to use custom components/renderers/validators. Hans   規格策定の初期の段階(Amy Fowler時代)から導入が決まっていたクライア ントサイドヴァリデーションに関してHansは、「1.0には間に合わなかった。 今後のリリースに含まれるであろう」と答えています。Geary氏ら著の Core JavaServer Facesの12章には、2つの実装例が紹介されています。
3.HTMLのリストをレンダーするコンポーネントはないの? Why not <h:dataList> ? Hiroshi, > Is there a renderer in the HTML render kit which can render HTML list with > <ul>, <ol>, <li> etc. with implicit forEach loop behavior? Not in the specification, but you can use the Bar renderer, i.e., <my:dataBar>, from the book examples to get that behavior. I believe MyFaces also provide a similar render. > If the answer is no, then why is it that? Because there wasn't time to define more standard renderers. > Is there a redy-made HTML List component somewhere? See above. Hans --   HTMLのリスト(的)なコンポーネントはないのか、という質問に対して Hansは、「JavaServer Faces完全ガイド」13章の<my:dataBar>が使える、 と答えています。実際にHTMLの<ul>, <ol>などをレンダーするカスタム コンポーネントは、Hansが紹介しているMyFacesサイトのほかに、次のフ ォーラム投稿も参考になります:(試行的段階), (ほぼ完成段階)
4.Resinでuserとpasswordとroleを登録するには?   resin.confの中に、次のように<authenticator>成分を書きます。特定 のWebアプリケーションだけに登録したいときは、これを<web-app-default> 成分ではなく、そのWebアプリケーションを定義している<web-app>成分の中に 書いてください。Resin Webサーバは、v.3.0.8以降がJSFを正しく動かせます。 <web-app-default> ... <authenticator type="com.caucho.server.security.XmlAuthenticator"> <init> <user>hans:secret:employee</user> <user>mike:boss:manager</user> <password-digest>none</password-digest> </init> </authenticator> ... ... </web-app-default> [Resin使用注記]--added 050901 Resinはデフォルトでは自分の内部のJavaコンパイラを使いますが、こいつは エラーメッセージが超不親切です。そこで、resin.confの中のjava compiler 要素の値を、"javac"や"jikes"に設定変えすることが、Resinを使うときの絶対 条件だと私は思います。Tomcatでは、javacの日本語エラーメッセージが文字化け することがありますが、Resinではそれはありません。
5. JSPを捨ててJSFの明るい未来を   「JavaServer Faces完全ガイド」の中でHansは最初から最後まで、JSPを絶 対視するな、と読者に念を押しています。JSFのメインのプレゼンテーション 技術としてJSPが選ばれたことに対しても、彼は批判的です。6月(2004)に彼 が書いた小論を、読んでみてください: Improving JSF by Dumping JSP ... この論文に指摘されている問題そのものは、 JSF 1.2で解決される予定です。 読者の感想, Hansからの応答
6. 精選リンク集 Sun MyFaces James Holmes氏 JSF Tutorials(Sergey Smirnov氏) Otrix Sun JSF Forum JSF Q&A by JSF EG members JavaServer Faces - Examples and Tutorials by Sergey Smirnov ------------------------ [JSF vs. Struts] Marty Hall JSF tutorial --このスライドを眺めてみましょう。(051026) StrutsよりもJSFが良い理由トップ10(050925, David Geary氏) 1.コンポーネント 2.レンダーキット(多様なデバイスへの対応が楽) 3.レンダラ(UIのロジックと表現を完全分離) 4.値結合(ビーンアクセスを超単純化) 5.イベント 6.拡張性 7.マネージドビーン(依存性注入) 8.POJOアクションメソッド 9.スタンダード 10.実装の多様 JSF vs. Struts(from forum.java.sun.com) Struts Or JSF? Struts And JSF? by Craig McClanahan JavaServer Faces (JSF) vs Struts - A brief comparison by Roland Barcia (IBM) ... Strutsとの対比論の中では、これがいちばん優れていると思います。 このページの「18.」の項のリンク先の記事は、Strutsとの比較がきわめて具体的です。 (上のリンクに記事がなければ[ここ]。) JavaWorld-WebLogsより: Here are my findings. I used struts for my previous project. Now I am using JSF. 以前はStrutsを使っていたが、今ではJSFを使っている。その理由は: 1) Declaritive Navigation is simple in JSF compare to struts JSFの宣言的ナビゲーションはStrutsに比べてシンプルだ。 2) No need to write action classes, so no need to configure them and no need to extend struts actions. Just write event handler methods and reference or bind them in JSF tags. This is very simple. アクションクラスを書く必要がない。だから、それらをコンフィギュレーションする 必要がないし、Strutsのアクションをextendsする必要もない。イベントハンドラの メソッドを書いて、JSFのタグの中でそれらを参照したりメソッド結合するだけでよ い。とっても簡単だ。 3)Pre-defined validator tags are good. 定義済みの各種ヴァリデータタグは便利だ。 4)Extending servlet is not an issue. I can use servlet filters or I can use LTPA security constraint. セキュリティのためのサーブレットの拡張云々は問題ではない。フィルタを使っても いいし、またLTPAを使うこともできる。 5) No need to write ActionForms. Just write methods in bean and reference them in JSF tags ActionFormを書く必要がない。ビーンの中にメソッドを書いて、JSFのタグの中でそ れらを参照するだけでよい。 Bootom line, I feel JSF is easy ande simple compare to struts. 結論として、JSFはStrutsに比べてやさしいし、簡単だ。 ------------------------ 最新(2004/08中旬)のJSF論争 --中身の濃い、詳細な議論ですから、JSFを真剣に検討しているかたの一読をおすすめします-- 発端となる発言 Geary氏の反論 読者の感想・意見 ------------------------ JavaServer Facesのイベント処理 ●Oracle ADF: 2006初頭にオープンソース化 OracleがJSFのカスタムコンポーネントを発表 Oracle ADF Faces Early Access(May 2005) Oracle ADF好評(Sep. 2005)
[HOME]