NetBeans6.8βでJSF2.0

JSF2.0を使ってWebアプリを作ってみます。IDENetBeansを利用します。現時点での最新版は6.7.1ですが、JSFの対応がよくなった6.8のベータ版を使うことにします。また、ライブラリの依存関係を考えたりするのは面倒なのでMaven2を利用します。NetBeans6.8βはMavenプラグインがデフォルトで利用可能です。
それでは早速プロジェクトを作ってみたいと思います。まず、プロジェクトビューで右クリックし、「新規プロジェクト」を選びましょう。すると次のようなダイアログが表示されるはずです。

カテゴリから「Maven」、プロジェクトから「Maven Web アプリケーション」を選択して「次へ」ボタンをクリックします。すると次のようなダイアログが表示されます。

今回はサンプルなのでデフォルトのまま何も値をいじらなくてもいいのですが、「グループID」だけ値を変更しました。値の変更が完了したら「完了」ボタンをクリックします。これでプロジェクトの完成です。では作成されたプロジェクトのフォルダ構成を見てみます。

Webページ、ソースパッケージ、テストパッケージ、ライブラリ、テストライブラリ、プロジェクトファイルとフォルダが並んでいます。WebページフォルダはMaven2のフォルダ構成でいうsrc/main/webappフォルダを参照しています。EclipseでいうとWebアプリケーションプロジェクトのWebContentsフォルダですね。
通常、Webページフォルダ配下にはWEB-INFフォルダを配置するのですが、今回はJavaEE6でプロジェクトを作成しているため、web.xmlが必須ではありません。そのためWebアプリにも関わらず、WEB-INFフォルダもweb.xmlフォルダもデフォルトでは作成されないようです。
あと、ソースパッケージフォルダはアプリの実クラスを、テストパッケージにはJUnitのテストクラスを格納することになります。ライブラリフォルダはソースパッケージに格納したクラスをコンパイル(だけではないですが...)するために必要なライブラリを格納するところで、テストライブラリはテストパッケージに格納したクラスのコンパイルに利用します。テスト用と実アプリ用でライブラリを分けて表示してくれるんですね、便利です:-D
ここで表示されているライブラリはプロジェクトファイルフォルダにあるpom.xmlファイルに記載されたライブラリが表示されています。そのためライブラリを追加する場合はpom.xmlファイルを編集する必要があります。pom.xmlファイルはMavenの設定ファイルなので、Mavenを知らないと編集がちょっと大変かもしれません。ただ、Webアプリを動かすための必要なライブラリは最初から記載されているので今回は編集する必要はないでしょう。
では何から手をつけましょう?そうですね、まずはWebページフォルダにあるindex.jspを削除してしまいましょう。JSF2.0ではFaceletsが標準サポートされたため、JSPではなくxhtmlを利用することになります。そのためindex.jspを削除して、新たにindex.xhtmlを作成します。
Webページを選択して右クリックし、「新規」→「その他」を選択します。すると次のようなダイアログが表示されるので、カテゴリから「JavaServer Faces」、ファイルの種類からJSFページを選択し「次へ」ボタンをクリックします。

次に表示されるダイアログでファイル名を「index」と入力、オプションをFaceletsとします。作成されるファイルのところを見るとindex.xhtmlファイルが作られることがわかります。

さあ、「完了」ボタンをクリックしましょう。これでindex.xhtmlがWebページフォルダに作成されました。ここでWebページフォルダを見るとindex.xhtmlの他に先ほどはなかったWEB-INFフォルダとweb.xmlファイルが作成されていることがわかります。自動的に作ってくれるんですね、これまた便利です:-D
web.xmlは動かす上では必要ないんですが、Welcomeページの設定とか、javax.faces.PROJECT_STAGEコンテキストパラメータが設定されているのでこのまま利用することにします。javax.faces.PROJECT_STAGEパラメータについては後ほど。
これで動かす準備は整いました。ここでここまでの成果物が動くことを確認します。プロジェクトを右クリックして「実行」を選択します。配備先のサーバの設定がされていないと次のようなダイアログが表示されます。

ここはGlassFish v3を選択します。選択後、「了解」ボタンをクリックするとアプリケーションのデプロイが開始されます。無事デプロイが完了するとブラウザが立ち上がり、次のような画面が表示されるはずです。

NetBeansを使うとここまでサクサクっと進めることができます。今日は長くなったのでこの辺で。次回はJSFコンポーネントを使ってみたいと思います:-)