Standard Taglib トピックス

メインメニュー

JSTL 最新情報

JSTL プログラミング

その他

著者専用メニュー

JSTL 最新情報 - 既知の問題印刷用ページはまだ利用できません

インデックス

式言語(EL)のサポートされたタグの属性にマルチバイト文字が通らない
執筆者:小川 環 2002.08.08更新
概要

Standard Taglib には、式言語 ( Expression Language ) のサポートされたタグの属性に非ASCII文字が通らない不具合が存在します。この問題により、日本語などのマルチバイト文字をタグの属性に直接設定することができません。属性値にマルチバイト文字を含めてタグを実行しようとすると、エラーが発生します。以下に、その例をいくつか示しておきます。


<c:out value="${customer}" default="不明"/>
<c:if test="${customer.address.country == '日本'}">
<c:forTokens var="token" items="青,赤|緑" delims="|,">

Note Bug 9257 ( Apache Bug Database )

対象ディストリビューションおよびバージョン

  • Standard Taglib v1.0 final release.
  • JSTL v1.0 RI ( included in "Java Web Services Developer Pack v1.0" ).
  • JSTL v1.0 RI ( included in "Sun ONE Studio 4" ).

解決方法1 最新バージョンにアップグレードする
任意のコンテナ上で Standard Taglib を利用している場合

Standard Taglib の Release Distribution より、最新バージョン ( v1.0.1 ) をダウンロードしてください。
その後、<ドキュメントルート>/WEB-INF/lib ディレクトリに配置された古いJARファイルを新しいものと入れ替え、Webアプリケーションを再起動してください。

Java Web Services Developer Pack を利用している場合

Java Web Services Developer Pack v1.0_01 にアップグレードしてください。
このリリースには、JSTL RI v1.0.1 ( = Standard Taglib v1.0.1 ) がバンドルされています。

解決方法2 ソースコードを修正する( 最新バージョンにアップグレードできない場合 )

この不具合は、式言語 ( Expression Language ) の構文解析器 ( 以下、ELParser ) の実装に原因があります。 ELParser のソースコードは JavaCC というツールで生成されています。 生成されるソースコードの元となっている <src>/org/apache/taglibs/standard/lang/jstl/ELParser.jj というファイルの一部を修正することで、この問題は解決します。以下に、修正箇所を示します。


options {
  JAVA_UNICODE_ESCAPE = false;
  UNICODE_INPUT = true;         -> このオプションを追加。
  STATIC = false;
}
ELParser.jj を修正した後、これを JavaCC でビルドしてください。そうすると、次の Java ソースファイルが自動的に生成されます。
  • ELParser.java
  • ELParserConstants.java
  • ELParserTokenManager.java
  • ParseException.java
  • SimpleCharStream.java
  • Token.java
  • TokenMgrError.java
最後に、生成された上記のソースファイルを <src>/org/apache/taglibs/standard/lang/jstl/parser ディレクトリに上書きコピーし、再コンパイルしてください。

Note JavaCC は、こちらのサイトより入手することができます。

JAXPのバージョンによるXMLタグの制限
執筆者:未定 2002.XX.XX更新

このトピックは、ただいま工事中です。

SQLのパラメータにNULL値をセットできない
執筆者:未定 2002.XX.XX更新

このトピックは、ただいま工事中です。


Copyright (c) 2002 The Ja-Jakarta Project. All rights reserved.