表示用JSPの基本形


前回、簡単なJSPを書いて表示させてみましたね。とりあえず表示はできたけど、どうも普通のJSPとはだいぶ違った形をしていました。JSFのJSPは、一般的なJSPと同じような形で書くこともできるのですが、ここではXHTMLベースで記述をしています。基本的な形を整理すると、こんな感じになります。

<?xml version="1.0" encoding="utf-8" ?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:h="http://java.sun.com/jsf/html" version="1.2">
  <jsp:directive.page language="java"
    contentType="text/html; charset=utf-8" pageEncoding="utf-8" />
  <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      ……ヘッダーの記述……
    </head>
    <body>
      <f:view>

      ……ここに画面の表示を記述する……

      </f:view>
    </body>
  </html>
</jsp:root>

XMLのルートとなるタグに、<jsp:root>というタグが用意されていますね。その中に、<jsp:directive.page>というタグを用意します。そしてその後に、一般的なHTML記述のための<html>タグが書かれます。

<html>タグの中のボディ部分に、実際の画面に表示される内容が記述されるわけですが、JSFでは、HTMLのタグを使って記述するだけでなく、独自のタグを使って記述されるものもあります。まず、<f:view>というタグが用意されていますね。このように、<f:○○>というタグは、JSFの構造的な要素を記述するために用意されているものです。<f:view>タグは、文字通り「JSFで表示するエリア」を示すものです。JSFで行う表示は、このタグの中に記述をします。

前回、サンプルとして作成したJSPファイルの<f:view>タグ部分がどうなっていたか、ちょっと思い出してみましょう。こんなものが書かれていましたね。

<f:view>
  <h:outputText value="JSF Sample" id="text0"
    style="color: #0000AA; font-size: 18px; font-weight: bold" />
  <br /><br />
  <h:outputText value="これは、JSFによる表示です。" id="text1" />
</f:view>

ここでは、<h:outputText>というタグが書かれています。これは、HTMLのページ内にテキストを表示するためのものです。JSFには、<h:○○>といったタグも用意されています。これは、HTMLの表示に関する要素(フォーム関係の表示など)を表示するためのものです。ここで使った<h:outputText>もその一つなのですね。

「じゃあ、普通に<p>とか<span>といったタグで直接テキストを表示させたりはできないのか?」と思った人。もちろん、そうしたHTMLのタグもそのまま使えます。ただし、「JSFで制御する」ことはできません。表示している値を取り出したり、変更したり、スタイルなどを修正したりといったことをJSF内から行いたい場合には、JSFに用意されているタグを使う必要があります。ただ表示するだけで何も操作する必要がなければ、HTMLのタグを使ってそのまま書けばいいのです。