簡體   English   中英

如何在JSP標記文件中使動態屬性起作用?

[英]How Do I make dynamic-attributes Work in JSP Tag Files?

所以根據我的JSP參考書,以及我可以在網上找到的所有其他參考,我應該能夠做類似的事情:

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

然后當有人使用我沒有在屬性指令中定義的屬性時,我應該能夠從“dynamicAttributesVar”映射訪問該屬性:

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

但是,這根本不起作用; 我嘗試時只得到“dynamicAttributesVar無法解析”錯誤。

現在,我確實發現(通過查看生成的標記的Java類),我可以通過執行以下操作來“破解”正在運行的動態屬性變量:

<% Map dynamicAttributesVar = _jspx_dynamic_attrs; %>

現在,除非我在tag指令中使用dynamic-attributes參數,否則該hack不起作用,所以看起來該參數正在做某事

但我想知道的是,我怎樣才能讓它為其他每個JSP用戶做些什么呢?

只是試圖獲得一個徽章來回答一個四年前的問題。

我也有這個問題,並在O'Reilly遇到一些幫助使用JSTL而不是scriptlet。

原始海報本可以使用此代碼獲取所有鍵/值:

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

這將獲得一個特定的值:

<c:out value="${dynamicAttributesVar['someUnexpectedAttribute']}"/>

“dynamicAttributesVar”是否是動態屬性所在的頁面上下文中鍵的名稱? 所以你可以做到

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

或者如果必須使用scriptlet:

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

(免責聲明:我還沒有嘗試過,我只是在直接Java實現的標簽中使用了動態屬性......但這似乎是合理的)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM