2
下面是從JSP文件的摘錄我的工作:如何循環使用JSTL/JSP中的逗號而不是字符串集合?
<%@ page session="false" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
...
<c:forEach var="attr" items="${auth.principal.attributes}" >
<c:forEach var="attrVal" items="${attr.value}">
<attribute name="${fn:escapeXml(attr.key)}" value="${fn:escapeXml(attrVal)}"/>
</c:forEach>
</c:forEach>
...
每個屬性可以是一個字符串或字符串的集合。這段代碼大部分時間都能正常工作,但是如果其中一個字符串值包含逗號,那麼它將被拆分爲兩個屬性。
什麼我期待像輸出如下:
...
<attribute name="FirstName" value="Adam"/>
<attribute name="LastName" value="Franco"/>
<attribute name="DisplayName" value="Franco, Adam S."/>
<attribute name="Status" value="Staff"/>
<attribute name="MemberOf" value="CN=All Staff,OU=Groups,DC=example,DC=edu"/>
<attribute name="MemberOf" value="CN=Admins,OU=Groups,DC=example,DC=edu"/>
...
我得到的卻是:
...
<attribute name="FirstName" value="Adam"/>
<attribute name="LastName" value="Franco"/>
<attribute name="DisplayName" value="Franco"/>
<attribute name="DisplayName" value=" Adam S."/>
<attribute name="Status" value="Staff"/>
<attribute name="MemberOf" value="CN=All Staff,OU=Groups,DC=example,DC=edu"/>
<attribute name="MemberOf" value="CN=Admins,OU=Groups,DC=example,DC=edu"/>
...
我覈實,我的「顯示名稱」屬性通過對未來從後端作爲一個簡單的字符串,就像FirstName和LastName一樣,唯一的區別是它恰好包含逗號。下面是該principle.attributes
地圖截屏右側,然後纔會慢慢回到了JSP:
我怎麼能一個字符串,並在JSP的字符串的集合區分或防止分裂字符串forEach
調用APPART逗號?
感謝您的幫助。不幸的是,'attr.class.simpleName'的值始終是「UnmodifiableEntry」。我試圖做測試作爲',但我總是得到一個JasperException。 –
@AdamFranco。我可以看到堆棧跟蹤嗎?你可以得到什麼類型的'attr.value'? –
在調試器中,forEach循環中的我的'attr'項目被列爲Collections $ UnmodifiableMap $ UnmodifiableEntrySet $ unmodifiableEntry(id = 6807)。 以下是測試'attr.value.class.simpleName'時的堆棧跟蹤:http://community.middlebury.edu/~afranco/notes/attr-value-class-simplename_stacktrace.txt 據我所知這是因爲attr.value是一個字符數組而不是一個字符串... –