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アプリケーションの開発効率向上


Book

Light Weight Java―JSF/Hibernate/SpringによるフレームワークでWebアプリケーションの開発効率向上


著者:岡本 隆史,金子 崇之,吉田 英嗣,権藤 夏男

販売元:毎日コミュニケーションズ

Amazon.co.jpで詳細を確認する