阅读后回答我自己的问题。
简而言之,我对如何评估JSP标记属性是错误的。如果使用scriptlet设置属性1的值,则直接使用其返回值(而不是转换为字符串)来设置属性的值。(如果类型不匹配,则EL会执行类型强制转换以使其起作用。如果失败,则会引发异常。)
在这个例子中
<c:forEach var="item" items="<%= new Object[] { 1, 2, 3 } %>">标签
items属性的类型为
Object,因此该属性设置为scriptlet的结果— array
new Object[] { 1, 2, 3}。- 请注意,您不能将scriptlet与文字字符串结合使用来设置属性。也就是说,您可能会认为
<c:forEach items="abc<%= "def" %>" var="c">
将执行脚本并评估为stringabcdef
。但是,它将设置属性值items
仅为stringabc<%= "def" %>
。



