jakaruta.doc_010
最終投稿日:2026年07月19日
package view;
public class SampleBean {
}
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; }
}
上手く画面表示できずエラーになる場合は以下を試して下さい。
[プロジェクト名(右クリック)] > [Maven] > [プロジェクトの更新]
POPした画面の「スナップショット/リリースの更新を強制」にチェックを入れ『OK』押下
<!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>
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; }
}
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ファイル]に設定を書いてみました。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
<scope>provided</scope>
</dependency>
流石に起動長いなと思ったら。
実はエクリプスが裏でコケてる可能性が高いです。
念のため5分程度経過しても起動しない場合は、タスクマネージャからアプリを終了しましょう。
その後普通にエクリプスを起動させます。
「@Getter」「@Setter」は、クラスにも適用できます。
例えば《SampleDto.java》が100個のプロパティがあったとしても以下の設定をするだけです。
<!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>