3

したがって、私のJSPリファレンスブック、およびWebで見つけることができる他のすべてのリファレンスによると、次のようなことができるはずです。

<%@ tag dynamic-attributes="dynamicAttributesVar" %>

そして、誰かが属性ディレクティブで定義しなかった属性を使用すると、「dynamicAttributesVar」マップからその属性にアクセスできるはずです。

<%= dynamicAttributesVar.get("someUnexpectedAttribute") %>

ただし、それはまったく機能しません。試してみると、「dynamicAttributesVarを解決できません」というエラーが表示されます。

ここで、(タグ用に生成されたJavaクラスを確認することで)次のようにすることで、機能する動的属性変数を「ハッキング」できることを発見しました。

<% Map dynamicAttributesVar = _jspx_dynamic_attrs; %>

さて、タグディレクティブでdynamic-attributesパラメーターも使用しない限り、そのハックは機能しないので、パラメーターは何かをしているようです。

しかし、私が知りたいのは、他のすべてのJSPユーザーに対してどのように機能させることができるかということです。

4

2 に答える 2

5

4 年前の質問に答えてバッジを取得しようとしているところです。

私もこの問題を抱えており、O'Reillyでスクリプトレットの代わりに JSTL を使用するための助けに出会いました。

元の投稿者は、このコードを使用してすべてのキー/値を取得できた可能性があります。

<c:forEach items="${dynamicAttributesVar}" var="a"> 
${a.key}="${a.value}" 
</c:forEach> 

これは特定の値を取得します:

<c:out value="${dynamicAttributesVar['someUnexpectedAttribute']}"/>
于 2013-09-23T10:05:44.383 に答える
4

「dynamicAttributesVar」は、動的属性が配置されるページ コンテキスト内のキーの名前ではありませんか? だからあなたはできる

<c:out value="${dynamicAttributesVar.someUnexpectedAttributes}"/>

または、スクリプトレットを使用する必要がある場合:

Map dynamicAttributes = (Map) pageContext.getAttribute("dynamicAttributesVar")

(免責事項: 試したことはありません。Java を直接実装したタグで動的属性を使用しただけですが、妥当なようです)

于 2009-04-18T00:03:52.767 に答える