2012-05-16 92 views
5

私は、このようなJSPタグ属性を複数回設定することはできません。

<mytag:editbox name="SEL_1" param="onclick='clickit();" param="size='4'" />.

などのタグを持ついくつかの古いJSPファイルを持っているこれらのJSPは、WebSphere 5.0で非常によく動作します。 Websphere 8.0に移行すると、何かが間違っています。 JSPでコンパイルされたJavaソースは、次のようになります。

editbox.setName("SEL_1"); 
editbox.setParam("size='4'"); //replaced by the last one 
editbox.setParam("size='4'"); 

最後の[属性]は、前の属性を上書きします。 Websphere 6.0とTomcatのJSPもテストします。 WAS6は8.0と同じで、Tomcatは言う:

org.apache.jasper.JasperException: /index.jsp (line: 17, column: 20) Attribute qualified names must be unique within an element 

タグの属性が複数回設定することはできません。

これはJSP 2.0+仕様の要件ですか? (私はWAS5.0のJSPコンテナはJSP 1.2だと思います)

2つのparam属性を1つにマージして問題を修正できますが、JSPソースを変更せずに正しい結果を得る方法はありますか?

答えて

5

同じ名前の複数の属性を持つと、は決してがJSP仕様でサポートされていました。 Websphere 5で動作していた場合は、そのサーバーバージョンで許可されている独自の動作に依存していて、他のものではありません。私はそれを取るタグクラスは、コレクションに値を追加するような何か、またはそのようなものをやっています。

デリミタ付きの文字列を使用するか、ネストされたタグを使用して、仕様に準拠するようにタグをリファクタリングする必要があります。

3

JSPタグはXML要素です。 XML要素は、同じ名前の複数の属性を持つことはできません。 IMHO、あなたのコードは、以前のWebsphereのバージョンではうまく動作しませんでした。これはおそらく、JSPタグの妥当性の検証と解釈によるものです。 true

allowMultipleAttributeValuesセット:と同じ動作を持つように

0

は、アプリケーション・デプロイメント・ディスクリプタ(ibm-ext-web.xmi)でこのJSP属性を含めることができます8ました。

またはWebコンテナのカスタムプロパティcom.ibm.wsspi.jsp.allowMultipleAttributeValuestrueに設定します。

出典:http://www-01.ibm.com/support/docview.wss?uid=swg1PM65454

0

私は同じ問題がありました。同時に、Displayタグライブラリタグでstrutsタグを使用していたので、この問題に直面しました。私が一度使用するものを選ぶと、そのエラーは消え去った。 2つの異なるライブラリから同じタグを使用するとあいまいさが発生します。

関連する問題