Apache MyFaces のテーブル・サンプルプログラム

Apache MyFaces とは,JSF の機能を実装したプログラムの一種です.Apache MyFaces に特有の 拡張機能もあります. JSF は便利ですし,Apache MyFaces の拡張機能も魅力的です.

このページでは, Apache MyFaces が持つ拡張機能のうち テーブルについて, プログラムの見本や,説明する.

前準備

Java 25(Temurin 25 JDK) のインストール

Eclipse Temurin(Adoptium)のインストールを行い、Javaのプログラムをコンパイル・実行する環境を整える。扱う環境は、Windows搭載パソコンである。現時点(2026年6月)での最新LTS版である Java 25(Temurin 25 JDK)を推奨する。

[Windows での Java 25(Temurin 25 JDK) のインストール手順を見るには、ここをクリック]

Windows での Java 25(Temurin 25 JDK) のインストール

以下のいずれかの方法で Java 25(Temurin 25 JDK)をインストールする。JDKがインストール済みの場合、この手順は不要である。

方法 1:winget によるインストール

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。そして、コマンド全体をコマンドプロンプトにコピー&ペーストする。

Temurin の Windows インストーラー(.msi)は、ユーザー単位ではなくマシン単位でインストールされる(1台に1つのインストール)。そのため、システム全体(全ユーザー向け)にインストールするには管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動するとPATHが反映される。

REM Java 25(Temurin 25 JDK) をインストール(PATH と JAVA_HOME を更新)
winget install --id EclipseAdoptium.Temurin.25.JDK -e --silent --accept-source-agreements --accept-package-agreements --override "ADDLOCAL=FeatureMain,FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome INSTALLDIR=\"C:\Program Files\Eclipse Adoptium\jdk-25\" /quiet"

上記の --override 内の指定の意味は次のとおりである。FeatureEnvironment はPATH環境変数の更新、FeatureJavaHomeJAVA_HOME 環境変数の更新、FeatureJarFileRunWith は .jar ファイルとJavaアプリケーションの関連付けである。INSTALLDIR はインストール先フォルダの指定である。

方法 2:インストーラーによるインストール

  1. Adoptium公式サイト(https://adoptium.net/temurin/releases/)にアクセスし、Version として「25 - LTS」、Operating System として「Windows」を選び、.msi 形式のWindows用インストーラーをダウンロードする。
  2. ダウンロードした .msi ファイルを実行し、インストールプログラムを起動する。
  3. ライセンス条項を確認し、同意できる場合はチェックを入れて次へ進む。
  4. 「Installation Scope」画面では「Install for all users of this machine」を選ぶ
  5. 「Custom Setup(カスタムセットアップ)」画面で、インストールする機能を選択する。既定では「Add to PATH(PATH環境変数への追加)」と「Associate .jar」(.jarファイルの関連付け)が有効になっている。さらに、ツリー内でバツ印(×)が付いている「Set JAVA_HOME variable(JAVA_HOME環境変数の更新)」をクリックして有効に変更することを推奨する。これらを有効にしないと、コマンドプロンプトから java コマンドを実行できなかったり、開発ツールがJDKを見つけられなかったりする。
  6. 「次へ (Next)」をクリックし、続いて「インストール (Install)」をクリックしてインストールを開始する。完了後「Finish」で閉じる。

インストールの確認

コマンドプロンプトで以下を実行する。

java --version

バージョン番号(例:openjdk 25.x.x)が表示されればインストール成功である。「'java' は、内部コマンドまたは外部コマンドとして認識されていません。」と表示される場合は、インストールが正常に完了していないか、PATHが反映されていない(コマンドプロンプトを再起動して再度確認する)。

あわせて、コンパイラと JAVA_HOME も確認しておくとよい。

javac --version
echo %JAVA_HOME%

Eclipse のインストール

Eclipse をインストールする。扱う環境は、Windows搭載パソコンである。

[Windows での Eclipse のインストール手順を見るには、ここをクリック]

Windows での Eclipse のインストール

以下のいずれかの方法で Java 25(Temurin 25 JDK)をインストールする。JDKがインストール済みの場合、この手順は不要である。

方法 1:winget によるインストール

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。そして,コマンド全体をコマンドプロンプトにコピー&ペーストする。

REM Temurin 25 JDK をインストール
winget install --id EclipseAdoptium.Temurin.25.JDK -e --accept-source-agreements --accept-package-agreements

winget が使えない場合や,インストール先・パッケージ種類を画面で選びながら導入したい場合は,次の方法を用いる。

方法 2:インストーラーによるインストール

公式サイトからダウンロードしてインストールできる。詳しくはhttps://www.kkaneko.jp/tools/win/eclipse.htmlで説明している。

Eclipse の初期設定、使用方法の基本

詳しくはhttps://www.kkaneko.jp/tools/win/eclipse.htmlで説明している。

その他

事前の準備

「JavaServer Faces サンプルプログラム」の Web ページの記述に従って,下記の作業を終えていること.

  1. Eclipse での動的 Web プロジェクトの作成
  2. Apache MyFaces バージョン 2.0 に関するファイル群 jsf-blank のインポート

Eclipse での操作手順

http://www.irian.at/myfacesexamples/home.jsf (現存しない) に記載されていたテーブル(Data Table)(Sortable) を使うプログラムの見本と操作手順を説明する.

  1. http://www.irian.at/myfacesexamples/home.jsf
  2. 「Sortable」をクリック
  3. SimpleSortableCarList.java, SimpleCar.java をダウンロード
  4. SortableList.java をダウンロード
  5. Eclipse のパッケージ・エクスプローラ等を使い,新しいパッケージ org.apache.myfaces.examples.listexample を作成
    1. (もし,プロジェクト・エクスプローラが開いていなければ)プロジェクト・エクスプローラを開く

      「ウインドウ」→「ビューの表示」→「プロジェクト・エクスプローラ」 と操作する.

      Java パッケージの作成,クラスの作成などの作業は,プロジェクト・エクスプローラで行う.

    2. Java パッケージを新規作成すべきプロジェクトの選択

      プロジェクト・エクスプローラに,プロジェクト一覧が表示されているはずです. Java パッケージを新規作成したいプロジェクト名 MYFACES右クリックして, 「新規」→「パッケージ」と操作する.

    3. Java パッケージ名の設定

      「Java パッケージ (Java package)」名前として,Java パッケージ名 org.apache.myfaces.examples.listexampleを記入する.

      その後,「終了」をクリック.

    4. Java パッケージの確認

      プロジェクト・エクスプローラにおいて, Java パッケージ org.apache.myfaces.examples.listexample が増えていることを確認する.

  6. パッケージ org.apache.myfaces.examples.listexample に,3 つの新しいクラス SimpleSortableCarList, SimpleCar, SortableList を作成
    1. パッケージ org.apache.myfaces.examples.listexampleを右クリックして, 「新規」→「クラス」と操作する.
    2. 「名前」にSimpleSortableCarList, SimpleCar, SortableList を指定して、新しいクラスを作成することを繰り返す.
  7. ダウンロードした SimpleSortableCarList.java, SimpleCar.java, SortableList.java を,Eclipse でコピーアンドペースト.

    プロジェクト MYFACES のパッケージ hoge.hoge.com にインポート

  8. Eclipse で,index.jsp を編集
    <%@ page session="false" contentType="text/html;charset=utf-8"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <%@ taglib uri="https://myfaces.apache.org/tomahawk" prefix="t"%>
    <html>
    
    <!--
    /*
     * Licensed to the Apache Software Foundation (ASF) under one
     * or more contributor license agreements.  See the NOTICE file
     * distributed with this work for additional information
     * regarding copyright ownership.  The ASF licenses this file
     * to you under the Apache License, Version 2.0 (the
     * "License"); you may not use this file except in compliance
     * with the License.  You may obtain a copy of the License at
     *
     *   http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing,
     * software distributed under the License is distributed on an
     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     * KIND, either express or implied.  See the License for the
     * specific language governing permissions and limitations
     * under the License.
     */
    //-->
    
    <body>
    
    <f:view>
    
        <h:form>
            <t:dataTable styleClass="standardTable"
                    headerClass="standardTable_SortHeader"
                    footerClass="standardTable_Footer"
                    cellpadding="2"
                    cellspacing="2"
                    width="100%"
                    border="1"
                    var="car"
                    value="#{list.cars}"
                    sortColumn="#{list.sort}"
                    sortAscending="#{list.ascending}"
                    preserveDataModel="false">
    
                <f:facet name="header">
                    <h:outputText value="(header table)"  />
                </f:facet>
                <f:facet name="footer">
                    <h:outputText value="(footer table)"  />
                </f:facet>
    
                <h:column>
                    <f:facet name="header">
                        <t:commandSortHeader columnName="type" arrow="true" id="type">
                            <h:outputText value="type" id="t1" />
                        </t:commandSortHeader>
                    </f:facet>
                    <h:outputText value="#{car.type}" />
                </h:column>
    
                <h:column>
                    <f:facet name="header">
                        <t:commandSortHeader columnName="color" arrow="true" id="color">
                            <h:outputText value="color" id="c1" />
                        </t:commandSortHeader>
                    </f:facet>
                    <h:outputText value="#{car.color}" />
                </h:column>
    
            </t:dataTable>
        </h:form>
    
    </f:view>
    
    
    </body>
    
    </html>
    
  9. WebContenr/WEB-INF/lib/faces-config.xml の編集

    Tomcat 6.0 用の設定例です.

    <?xml version="1.0"?>
    <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/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
       version="2.0">
        <managed-bean>
            <managed-bean-name>list</managed-bean-name>
            <managed-bean-class>org.apache.myfaces.examples.listexample.SimpleSortableCarList</managed-bean-class>
            <managed-bean-scope>session</managed-bean-scope>
        </managed-bean>
    </faces-config>
    
  10. 実行結果