MyFacesのblank.warを動かして修正してみる
【主旨】
MyFacesについてくる blank.warをeclipseで動かして、修正してみる。
【準備】
●eclipseでサーバーをつくっておく
【作業1:blank.warをもとに日本語表示ができるようにする】
●eclipseにDynamic Web Project で適当なwebプロジェクトをつくる。
ここでは以下「myblank」
●myfaces-1.1.1-examples.zipを解凍して、blank.warを解凍する。
解凍の仕方によってはwarの中身がちらばるので、先に別のフォルダをつくり
そこにwarをコピーしてそこで解凍するのがよい
●blank.warを解凍した、WEB-INFの中身の以下を、「myblank」WebContent/WEB-INFにコピーする
lib フォルダまるごと
examples-config.xml
web.xml
●blank.warを解凍したうち、以下を「myblank」のWebContentにコピーする
css フォルダ
jsp全部
●myfaces-1.1.1-src.zipを解凍して、
src -> examples -> blank -> src -> java -> org フォルダを
「myblank」の「src」にコピーする
●「myblank」をサーバーで実行する
●JSPのencodingをかえる
helloWorld.jspとpage2.jspのtext file encodingをUTF-8にする
●JSPの中身を修正する
helloWorld.jsp とpage2.jsp
ファイルの先頭にcontentTypeをかく
<%@page contentType="text/html; charset=UTF-8" %>
htmlのタグを書いて<f:view>はbodyのなかにくるようにする
メタタグをUTF-8でかく
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
わかりやすくするためにhelloWorld.jspの
「Please enter your name」
を
「名前を入力してください」
に変更とかしてみる
【作業2:入力チェックをHelloWorldBackingでするようにする】
●helloWorld.jsp
input1 にある required="true" を required="false" にする
●HelloWorldBacking.java
send() メソッド で、入力チェックをする。
nameが未入力の場合は、メッセージを設定して、カラ文字列をかえすようにする。
(例)
public String send() {
if (name == null || "".equals(name)) {
// メッセージを作る
// 引数1:SEVERITY
// 引数2:メッセージ
// 引数3:詳細なメッセージ
FacesMessage facesMessage = new FacesMessage(
FacesMessage.SEVERITY_ERROR, "入力してください",
"名前を入力しないと次の画面に行きません");
// 特定するばあいはクライアントのIDを書く。めんどい場合はnull
FacesContext.getCurrentInstance().addMessage("form:input1",facesMessage);
return "";
}
return ("success");
}
●helloWorld.jsp に
<h:messages layout="table" />
など追加してみる。
これはメッセージが全部でてくる。
●画面にアクセスして未入力でボタンをおしてみる
メッセージが2箇所にでてくる。
入力してボタンをおしたときは、次の画面にいくことを確認する
【考察】
JSFはrequired="true"などをかいて入力チェックが楽のような話がよくありますが
さほど便利ではない。
結局はサーバでまとめてチェックすると思う。
クライアントIDを指定してメッセージを入れるのもめんどうというか同期をとるのがむつかしいので
あまりやらない。
Light Weight Java―JSF/Hibernate/SpringによるフレームワークでWebアプリケーションの開発効率向上
|