code up

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スクリプティング要素 はここでは許されません

jsp:doBodyで呼ばれる中身にscriptlet等を書けないのは、仕様のようです。

こんなJSPがありました。

<t:body>
  <%="Hello"%>
</t:body>

t:はtaglibのprefixです。

body.tag(t:body)では次のように処理しています。

<body>
    <jsp:doBody />
</body>

そうすると、

org.apache.jasper.JasperException: /WEB-INF/jsp/xxxx.jsp(106,3) スクリプティング要素 ( <%!、<jsp:declaration、<%=、<jsp:expression、<%、<jsp:scriptlet ) はここでは許されません

こんなエラーが出ます。書き方が悪いとか、どうにか設定すればいいというのではなく、仕様としてエラーメッセージの通りスクリプティング要素はjsp:doBody等のフラグメントコードには書くことができないのです。

参考にしたのは↓あたり:
http://www.coderanch.com/t/484737/java-Web-Component-SCWCD/certification/jsp-doBody-tag-not-displaying
http://www.coderanch.com/t/507530/java-Web-Component-SCWCD/certification/called-tag-file-scripting-inside
http://www.coderanch.com/t/484737/java-Web-Component-SCWCD/certification/jsp-doBody-tag-not-displaying

最終的にjsp-2_0-fr-spec1.pdf(JSP2.0の仕様書)のJSP.13.7.1 JspFragmentに、

The definition of the JSP fragment must only contain template text and JSP action elements. In other words, it must not contain scriptlets or scriptlet expressions.

とjsp:doBodyやjsp:invokeで呼び出されるjspの破片(JspFragment)には、 スクリプトレットやJSP式は含めることができないと書いてありますた。

アクションタグ(<jsp:XXX />やカスタムタグ等のこと)とプレーンテキスト(ただの文字列)のみ許可されるんですね。

関連記事
タグ:Java JSP JSTL J2EE
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。