表示用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のタグを使ってそのまま書けばいいのです。