Servlet 2.4/JSP 2.0でサポートされた機能で、
taglibディレクティブなど、JSPの冒頭部分でどのページにも共通する記述を、
1つのファイルにまとめて宣言することが出来るようになりました。
まず、web.xmlでそのファイルを宣言します。
<?xml version="1.0" encoding="Shift_JIS"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
...
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>false</el-ignored>
<page-encoding>Windows-31J</page-encoding>
<scripting-invalid>false</scripting-invalid>
<include-prelude>/CommonJSPHeaders.jsp</include-prelude>
</jsp-property-group>
</jsp-config>
...
</web-app>
|
web-appタグで2.4仕様を宣言します。その中で、jsp-configタグを上の例のように記述します。
include-preludeの中は、その共通部分を書くファイルのパスで、
スラッシュ/で始め、コンテキストルートからの相対パスで記述します。
以下はその/CommonJSPHeaders.jspの例です。
<%@ page contentType="text/html;charset=Windows-31J" language="Java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
|
個々のJSPファイルでは、上記と同じ記述は全て省くことができ、とても便利です。
なお、include-preludeと同じように、ヘッダ部の代わりにフッタ部(HTMLの末尾)
を共通化する、include-codaというタグも使えます。
ちなみに、上記の「scripting-invalid」という要素をtrueにすると、
そのパターンに合致するJSPにはスクリプティング要素、つまりいわゆるスクリプトレットが書けなくなります。
<% 〜 %>のようなブロックが見つかると、
JasperException (スクリプティング要素…中略…はここでは許されません) が発生します。
省略時デフォルトはfalse。
scripting-invalidの説明をしたのでel-ignoredの説明をしなければいけますまい! (聞いてないって)
これはJSPに直接EL式(${...})を書いた場合にそれを解釈する(false)か、
無視してそのままの文字列として出力する(true)かを設定します。省略時デフォルトはこちらもfalse。
(first uploaded 2005/03/16 last updated 2007/07/07, URANO398)
|