6

次のようなタグが付いた古いJSPファイルがいくつかあります

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

これらのJSPは、Websphere5.0で非常にうまく動作します。Websphere 8.0に移動すると、何かがおかしい。次のようにJSPによってコンパイルされたJavaソース:

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

最後の[属性]は、その前の属性を上書きします。また、Websphere6.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

タグの属性は複数回設定できません。

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

2つのparam属性を1つにマージして問題を修正できますが、JSPソースを変更せずに正しい結果を取得するにはどうすればよいですか?

4

4 に答える 4

6

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

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

于 2012-05-16T13:35:47.197 に答える
3

JSP タグは XML 要素です。また、XML 要素に同じ名前の複数の属性を含めることはできません。私見ですが、あなたのコードは以前のバージョンの Websphere で偶然にしか機能しませんでした。おそらく JSP タグの検証と解釈がずさんであったためです。

于 2012-05-16T13:36:02.023 に答える