Shale Remotingを使ったファイルアップロードの方法

java.sun.comから,こんな記事が掲載されている。 「 Accessing Resources From JavaServer Faces Custom Components」 - java.sun.com JSFのカスタムコンポーネントで,Ajaxによるファイルアップロード系の処理をするためにShale RemotingやDojoを使った例である。全体のコードが掲載されておらず,ポイントしかわからないかもしれない。もし全コードを見渡したい人は,「 Java PetStore 2....

JSFアプリケーションの単体テスト with Shale Test Framework

JSFの実行時の環境をシミュレートした状態で単体テストを可能にしてくれるShale Test Frameworkについて,全4回のエントリで紹介した。 「 JSFアプリケーションの単体テスト with Shale Test Framework (1)」  [全般] Shale Test Frameworkの紹介。 「 JSFアプリケーションの単体テスト with Shale Test Framework (2)」  [全般] 題材の紹介とEclipseプロジェクトの準備。 ...

JSFアプリケーションの単体テスト with Shale Test Framework (4)

Shale Test Framework(STF)を紹介しているエントリも,早くも3回目になってしまった。 前回のエントリでは,テストメソッドの説明の途中で強引に終わらせてしまった。今回はその続きを見ていこう。 まず,テストメソッドのソースコードを再び示しておこう。 前回のエントリでは,テスト対象のgetRightSelectItems()メソッドを呼び出すところまで解説した。 public void testGetRightSelectItemsValue1() throws Exc...

JSFアプリケーションの単体テスト with Shale Test Framework (3)

前回のエントリでは,Shale Test Framework(STF)を試すための題材を紹介した。さらに,STFを試すためのtest-stfプロジェクトも提供を行った。入手していない方は,是非 ここからダウンロードして欲しい。test-stfプロジェクトには,「 JSF+AjaxでUIコンポーネント開発 with Shale Remoting」で取り上げたdouble-selectコンポーネントに選択肢を提供するManagedBean,SelectItemsProducerクラスを含めた。...

JSFアプリケーションの単体テスト with Shale Test Framework (2)

前回のエントリで予告した通り,今回はShale Test Framework(以下STFと略す)を試すための題材を紹介することにしよう。 STFの対象問題領域は,JSF APIやServlet APIに依存したコードを持つManagedBeanクラスが主な領域となる。「 JSF+AjaxでUIコンポーネント開発 with Shale Remoting」の一連のエントリの中で,double-selectコンポーネントの選択肢をJSON形式のテキストで返却するManagedBean,Sele...

JSFアプリケーションの単体テスト with Shale Test Framework (1)

JSFの機能を補完することで,より生産性の高さを求めることができる Apache Shale。もちろんJSFのテストの領域にも足を踏み入れている。今回から数回,JSFの単体テストを楽にしてくれる「Shale Test Framework」について紹介してみようと思う。 JSFの大きな特徴として「ManagedBeanをPOJOで作ることができる」ということが真っ先にあげられる。Strutsやその他の普及したWebアプリケーションフレームワークでは,フレームワークが提供するinterface...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting

Ajax対応JSFコンポーネントをApache Shale Remotingを使って作成する方法を,全15回に渡ってエントリした。 「 JSF+AjaxでUIコンポーネント開発 with Shale Remoting (1)」  [全般] やってみようと思った理由と,Shale Remotingの紹介。 「 JSF+AjaxでUIコンポーネント開発 with Shale Remoting (2)」  [全般] 作成するコンポーネント(double-selectコンポーネント)の...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting (15)

Shale Remotingを使ったJSFコンポーネントの作成について長らくエントリしてきたが,今回でtest-dsプロジェクトも完成し,実行ができるようになる。残りの3つ( 前回のエントリで2つと紹介したが1つ忘れてた)をサクッとやっつけることにしよう。 まずは,double-selectコンポーネントが使用する2つのManagedBeanを,faces-config.xmlファイルに定義する。 version=”1.0” encoding=”Shift_JIS”? paramet...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting (14)

double-selectコンポーネントの動作確認を行うためのtest-dsプロジェクト作りも2回目となった。 前回のエントリでは,double-selectコンポーネントをページに配置するためのJSPファイルを作成し,double-selectタグの属性値としていくつかManagedBeanとの連携を記述した。今回は,連携するManagedBeanのクラスを紹介しよう。 まずは簡単な方から。double-selectコンポーネントの選択値を得るためのManagedBeanを,Param...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting (13)

Shale Remotingを使ったAjax対応JSFコンポーネントの作成も,今回で13回目を迎えた。かなり気合いが入ったエントリが続いているが,前回までの1〜12回で,double-selectコンポーネントができ上がった。今回からは,double-selectコンポーネントを利用するためのtest-dsプロジェクトを解説していこうと思う。 まずは,test-dsプロジェクトをどんなアプリケーションにするかだが,単純に1つのページにdouble-selectコンポーネントを配置して,左...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting (12)

今回はdouble-selectコンポーネントの残り一つのファイルである,faces-config.xmlファイルを紹介する。このファイルをもって,double-selectコンポーネントは完成となる。加えて,maven2でのパッケージング&ローカルリポジトリへのインストールまで行うことにしよう。残念ながら,今回もAjaxやShale Remotingは関係しない。 まず,カスタムタグ,UIコンポーネント,そしてレンダラがどのように関連しているかを示そう。 図を見て分かる通り,クラ...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting (11)

今回は,JSFコンポーネント,特に値の入力が可能なコンポーネントを作る際の基礎知識と,実装方法について紹介していこうと思う。Shale Remotingを使用したAjax対応コンポーネントの開発がメインテーマだが,今回はAjaxもShaleも関係なく,JSFのみの話になる。実は, 前回のエントリでdouble-selectコンポーネントのAjax関連の話は終わってしまっているんだけど,入力可能なJSFコンポーネントの作成方法はネットでも詳しい説明はなかったりするので,是非お付き合い頂きたい...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting (10)

前回までの説明で,double-selectコンポーネントのサーバでのレンダリング処理が行われるようになった。DoubleSelectRendererクラスのencodeBegin()メソッドによって,左右2つのselectタグがレンダリングされる。しかし,レンダリングされる内容の中で,いくつかJavaScript関数が登場したが,どれもdouble-select.jsファイルに記述されるとしか説明しなかった。今回は,Webブラウザ上で実行されるJavaScript関数を記述したdoubl...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting (9)

前回はdouble-selectコンポーネントのレンダリング結果を説明して終わってしまった。今回という今回は,レンダラクラスの説明を行おうと思う。前回紹介したレンダリング結果と対応させながら以降の説明を見ていって欲しい。 JSFコンポーネントをレンダリングする機能を持つクラスは,Rendererクラスを継承して作成する。double-selectコンポーネントでは,DoubleSelectRendererというクラス名とした。 public class DoubleSelectRe...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting (8)

今回は,double-selectコンポーネントをレンダリングするDoubleSelectRendererクラスの解説を行おうと思う。その中で,Shale RemotingのAPIを使用してみる。 前回紹介したDoubleSelectTagクラスのsetProperties()メソッドによって,JSPに記述されたカスタムタグの属性値がUIコンポーネントにセットされる。DoubleSelectTagクラスが継承するUIComponentTagクラスは,setProperties()メソッド...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting (7)

JSF+Ajax with Shale Remotingと題したエントリだが,やっとJavaコードの紹介を始めるときが来た。今回は,double-selectコンポーネントを構成する2つのクラスの一つ目,カスタムタグハンドラクラスについて解説しようと思う。 JSP実装のJSFコンポーネントを作成する際,それはカスタムタグの形態となるために,タグハンドラクラスを作成する必要がある。JSFでは,以下のどちらかのクラスを継承して作成する。 UIComponentTag - 本体...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting (6)

「 JSF+AjaxでUIコンポーネント開発 with Shale Remoting (4)」で予告した内容を今回紹介しようと思ったが,あまり概論ばかりでも退屈なので,実際のコードを今回から解説していこうと思う。その中で処理の流れを見ていけばいいかな,と。 JSFコンポーネントのJSP実装はカスタムタグの形態をとるため,まずはタグライブラリディスクリプタ,つまりtaglib.tldファイルから取り上げよう。taglib.tldファイルはJSFだからといって特別なことは何もない。JSPのカス...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting (5)

「 JSF+AjaxでUIコンポーネント開発 with Shale Remoting (4)」で予告した内容を今回は置いておいて,大事なことを書くのを忘れていたので,今回はそれを先に取り上げる。 double-selectコンポーネントのJAR内の構成など,突然実装寄りな話に前回は終始してしまったが,肝心のdouble-selectコンポーネントを利用する際のカスタムタグの記述がどういうものになるかを示していなかったことに気がついた。まずは下のリストを見て欲しい。 double-sele...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting (4)

「 JSF+AjaxでUIコンポーネント開発 with Shale Remoting (3)」で予告した通り,今回はdouble-selectコンポーネントの構成について紹介する。それを通じて,Shale Remotingが便利だと思う根本理由を説明したいと思う。 JSFは,コンポーネント指向であることは何度も本ブログで述べていることだが,ではJSFコンポーネントの実体がどういったものなのかは,あまり一般的には説明されていない。 再配布可能なJSFコンポーネントは,クラスファイルと定義ファ...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting (3)

「 JSF+AjaxでUIコンポーネント開発 with Shale Remoting (2)」で予告した通り,カスタムコンポーネントを開発するための開発環境の構築について紹介する。NetBeansを使えば簡単にJSFを使った開発をすることができるが,Maven2との連携がとれないことや,やっぱりEclipseは多数派だろうと思うので,ここではEclipseを使うことにした。 今回は「JSFカスタムコンポーネントを開発するプロジェクト」と「作ったカスタムコンポーネントを利用するプロジェクト」...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting (2)

「 JSF+AjaxでUIコンポーネント開発 with Shale Remoting (1)」で予告した通り,さっそく作成するコンポーネントはどういったものかを紹介しよう。コンポーネントの内部動作を把握できれば目的達成なので,最低限かつ再利用可能な機能とする。 題して「DoubleSelectコンポーネント」。 DoubleSelectコンポーネントは,2つのコンボボックスから構成される。2つのコンポーネントは,横に2つ並べる。左のコンボボックスが大分類,そして右のコンボボックスが小分類,...

JSF+AjaxでUIコンポーネント開発 with Shale Remoting (1)

最近のWebアプリケーションの開発(特にスクラッチから作れる案件)では,AjaxによるWeb2.0的なユーザインタフェースを採用することがほとんどではないだろうか。HTMLの標準フォーム部品に加えて,JavaScriptと非同期通信を使ったWebブラウザ上でのインタラクティブな動作が好まれるようになった。逆に言うと,実装者にとっては,例えばJSPを使ってHTMLを組み立てるだけではなく,JavaScriptまで面倒をみないといけなくなる。必要とする知識やコーディングの量が増えてしまうわけで...

shale-usecasesでのAjaxリクエストの処理過程

JSFを利用したアプリケーションを作るための一つの現実解として,Shaleが挙げられる。Shaleにはshale-usecasesと呼ばれる簡単かつ要点を非常に良く突いたサンプルアプリケーションが公開されているが,Ajaxによる要求に対してShaleがどのように対処しているのかを追ってみた。 [郵便番号から町&州を取得する] zipCode.jsp内のHTMLのコンボボックス(h:selectOneMenu)の選択状態がユーザの操作により変化する。 o...

Struts Shaleに新example登場!

次期StrutsのShaleだが,今まではuse-casesというサンプルしかなく,これは非常に簡単なものだった。use-casesからShaleの本質はもちろん見えてきたが,実際にShaleの利用シーンは自分である程度想像するしかなかった。 しかし,というか,やっぱりというか,今日Struts Shaleの開発が行われているSVN Repository( http://svn.apache.org/repos/asf/struts/shale/trunk)を覗いたら,mailreade...

Struts Shaleって?

Strutsのバージョン2は当然Struts2かと思いきや,「そりゃ2じゃないだろ」と猛反発を食らったために「 Struts Shale」となったらしい。このStruts Shale,JSFとの結びつきの強いものになるそうだ。* JSF(JavaServer Faces)【.NET死亡?!!!】 by 2ch まぁ作者が一緒ということで,JSFとStruts Shaleでうまく分業体制をとっていくという方向性らしい。Struts Shaleの具体的なサポートとして, ベストフレーム...