jakaruta.doc_010
R e i - D r e a m
for Laravel
TOP > Jakarta_EE10 > フレームワークの世界へようこそ!
Guest
login

最終投稿日:2026年07月19日

【検証環境】- Windows11 - JDK 17-LTS - Eclipse 2024-09 R - Wildfly 28.0.1
目次
○ フレームワークを体感しましょう
実際にJAVAを使ったフレームワーク体験と、「Lombok」で少し楽なコード記述を解説します。
フレームワークの基本
[特殊なフレームワーク][PrimeFaces][jakarutaの未来]と、少し文学的?なお話。
UIコンポーネント
Jakarutaで使用できる[UIコンポーネント]の概要を解説します。
各種UI解説
Jakarutaで使用できる[UIコンポーネント]の詳細を解説します。
UIコンポーネント(AJAX)
AJAX利用頻度の高い[commandButton][selectOneMenu]をサンプルを交えて解説します。
フレームワークを体感しましょう。
バッキングビーン
大まかな環境設定は完了しましたが、これだけではアプリは動きません。
ここからは少しづつ機能を追加していきましょう。
まずは『バッキングビーン』から。
今回作成した画面でJAVA書きましたっけ?
実は書いてません。
単純に《.xhtml》の内容を参照してるだけです。
そこでJAVAファイルを作成します。 まずは以下の手順でディレクトリを切っていきます。
① [src/main]へ行き『java』ディレクトリを作成します
② プロジェクト名を右クリック > リフレッシュ
これで『javaリソース』内に「src/main/java」が表示されてるハズです。
それでは「src/main/java」を右クリックし、[新規 > パッケージ]を選択します。
名前を『view』として作成します。
更に作成したパッケージに以下クラスを作成しましょう。
    SampleBean
以下の様な空のクラスが作成されます。
SampleBean.java

package view;

public class SampleBean {

}

このクラスを以下の様に編集して下さい。
SampleBean.java

package view;

import java.io.Serializable;
import jakarta.annotation.PostConstruct;
import jakarta.faces.view.ViewScoped;
import jakarta.inject.Named;

@Named(value = "sampleBean")
@ViewScoped
public class SampleBean implements Serializable {
    private static final long serialVersionUID = 1L;
    private String name;
    // 画面が開かれたときに最初に1回だけ実行される初期化メソッド
    @PostConstruct
    public void init() {
        System.out.println("バッキングビーンが初期化されました!");
        this.name = "初期値としての名前";
    }
    // Getter
    public String getName() { return this.name; }
    // Setter
    public void setName(String name) { this.name = name; }
}

このクラスを以下の様に編集して下さい。
sample.xhtml

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h=
"jakarta.faces.html">
<h:head>
    <title>Hello World</title>
</h:head>
<h:body>
    <h1>おはよう世界!</h1>

    <h:form>
        <h:inputText id="username" value="#{sampleBean.name}" />
    </h:form>
</h:body>
</html>

以上で設定は完了です。
サーバタブから起動して画面を表示してみましょう。
テキストボックスが表示され、初期値が以下となっています。
    初期値としての名前
また、コンソールタブに注目して下さい。
記述したコード『System.out.println("バッキングビーンが初期化されました!");』の内容が表示されています。
ポイント

上手く画面表示できずエラーになる場合は以下を試して下さい。
  [プロジェクト名(右クリック)] > [Maven] > [プロジェクトの更新]
POPした画面の「スナップショット/リリースの更新を強制」にチェックを入れ『OK』押下

バッキングビーン2
それではもう少し修正して、値を送信できる様にしてみましょう。
以下を追加します。
sample.xhtml

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="jakarta.faces.html">
<h:head>
    <title>Hello World</title>
</h:head>
<h:body>
    <h1>おはよう世界!</h1>
    <h:form>
        <h:inputText id="username" value="#{sampleBean.name}" />
        
<BR />
        <h:commandButton value="送信" action="#{sampleBean.submit()}" />
    </h:form>
</h:body>
</html>

SampleBean.java

package view;

import java.io.Serializable;
import jakarta.annotation.PostConstruct;
import jakarta.faces.view.ViewScoped;
import jakarta.inject.Named;

@Named(value = "sampleBean")
@ViewScoped
public class SampleBean implements Serializable {
    private static final long serialVersionUID = 1L;
    private String name;
    // 画面が開かれたときに最初に1回だけ実行される初期化メソッド
    @PostConstruct
    public void init() {
        System.out.println("バッキングビーンが初期化されました!");
        this.name = "初期値としての名前";
    }
    // アクションボタン

    public void submit() {
        System.out.println("submitメソッドです。[" + this.name + "]が送信されました。");
    }
    // Getter
    public String getName() { return this.name; }
    // Setter
    public void setName(String name) { this.name = name; }
}

ビルドして画面を確認してみましょう。
例えば「hoge」と入力して『送信』を押下すると、コンソールタブに以下が表示されます。
  『submitメソッドです。[hoge]が送信されました。』
あれ?作成した『submit』メソッドの引数は空ですよね。
でも送信されてメソッドに処理が移行した時には既にプロパティ『name』の値は『hoge』でした。
バッキングビーン作成時、クラスに『@ViewScoped』を付与した事を覚えていますか?
そうです。これがその恩恵なのです。
つまり処理がPOST遷移の間、【ビュー ⇔ ビーン】間の値のやり取りは管理されています。
この処理を【ポストバック(Postback)】と呼びます。
試しにURLを直叩き(GET送信)すると、値が元に戻ります。
ついでに日本語「ほげ」も送信してみましょう。
    あうぅ。
文字化けしましたね。
これはアプリに「I/O」を分からせてやる必要があります。
    ※ [I/O] = インプット / アウトプット
サクッと以下のクラスを作成しましょう(パッケージは[filter]が良いかも)
CharacterEncodingFilter.java

package filter;

import java.io.IOException;
import java.io.Serializable;
import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.annotation.WebFilter;

@WebFilter("/*")
public class CharacterEncodingFilter implements Filter, Serializable {
    private static final long serialVersionUID = 1L;
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        // リクエストもレスポンスもUTF-8にします
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        // 次の処理(FacesServletなど)にバトンを渡します
        chain.doFilter(request, response);
    }
}

ポイント

俗に言う[設定]は、今回の様に『JAVAファイル』に記述する方法と、『XMLファイル』に記述する方法があります。
[XMLファイル]に記述するメリットは、ロジックと設定の分離があります。
ただし、XMLファイルの設定は環境。例えばエクリプスのバージョンが変わるだけで壊れるリスクもあります。
その場合、先ほどのメリットが裏目になり『アプリは落ちたが、どこでエラーなのかわからない』状態に陥りやすいです。
なので今回は[JAVAファイル]に設定を書いてみました。

Lombok(ロンボク)インストール
今回までのサンプルでは、プロパティ『name』を1つ使用しました。
そのためバッキングビーンに以下コードを記述しました。
public String getName() { return this.name; }
public void setName(String name) { this.name = name; }
1つプロパティを作成すると2行追加する..
面倒ですねぇ。
しかも『@ViewScoped』は内部的に自動で値のやり取りをするため、メソッド名を間違える事は許されません。
  ※ 例えば変数の型が[boolean]だった場合、メソッド名は『isName()』となります。
プロパティが100個あったら、200個のメソッドを作成って面倒です。
    そこで重宝するのが『Lombok』です。
以下サイトからダウンロードします。
    https://projectlombok.org/download
Lombokはエクリプスとの相性が大事なので「older versions」から過去一覧画面へ遷移します。
  『lombok-1.18.34.jar』をダウンロードしましょう。
それでは設定していきます。
① pom.xmlに以下を追記します。
pom.xml

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.34</version>
    <scope>provided</scope>
</dependency>

② 念のためMavenプロジェクトの更新
    [PJ名右クリック] > [Maven] > [プロジェクトの更新] > [OK]
③ エクリプスを終了する
④ ダウンロードした『lombok-1.18.34.jar』を任意のディレクトリへ『lombok.jar』として設置
    ※ 分かりやすい様に「eclipse」直下辺りで
⑤ [jar]を右クリックで[プログラムから開く] > [java]を選択する
⑥ POPした画面の中央の白い枠内に何も表示されていない場合は『Specify location..』押下します。
⑦ ファイルの選択画面がPOPするので、自身の『eclipse.exe』を指定します。
⑧ すると白枠内に選択した『eclipse.exe』が表示されるので『Install / Update』押下します。
⑨ そのまま『Quit Installer』押下します。
⑩ 設定ファイル『eclipse.ini』を確認してください。以下が追記されてます。
-javaagent:C:\~\eclipse\lombok.jar
  ※ 追記されてない場合は、自力で追記する
設定は以上です。 それではエクリプスを起動しましょう。
ポイント

流石に起動長いなと思ったら。
実はエクリプスが裏でコケてる可能性が高いです。
念のため5分程度経過しても起動しない場合は、タスクマネージャからアプリを終了しましょう。
その後普通にエクリプスを起動させます。

さて、それでは『Lombok』の凄さを実感する時です。
バッキングビーン(SampleBean.java)の以下コードを削除しちゃいましょう。
public String getName() { return this.name; }
public void setName(String name) { this.name = name; }
次にプロパティ『name』に対して、以下のアノテーションを追記します。
@Getter
@Setter
private String name;
それぞれのコードをロールオーバーすると「Lombok」のクラスがインポートできる様になります。
どうですか?シンプルで楽になりましたよね。
ポイント

「@Getter」「@Setter」は、クラスにも適用できます。
例えば《SampleDto.java》が100個のプロパティがあったとしても以下の設定をするだけです。

@Getter
@Setter
class IndexDto {
    private String hoge;
    ~ 省略(あと99個ある) ~
}

ログインしてコメントを残そう!!


レンズモード 【新規購入限定用】
きっぷる