如何从JSTL / JSP标记中的String []属性获取项目

时间:2011-08-16 12:34:35

标签: java jsp el jsp-tags

在普通JSP中,我可以通过EL ${form.items[0]}获得第一个项目,但是在JSP标记中,同一个表达式会抛出以下异常:

  

javax.el.PropertyNotFoundException:在类中找不到属性0    java.lang.String中

${form.items}的值为[Ljava.lang.String;@315e5b60

JSP标记代码是:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ attribute name="items" required="true" %>
${items[0]}

JSP代码是:

<%@ taglib prefix="t" tagdir="/WEB-INF/tags"%>
<t:input items="${form.items}"></t:input>

也许我忘记了属性的类型或其他东西?为什么在JSP和JSP标记中访问值的方式不同?

1 个答案:

答案 0 :(得分:13)

您需要指定自定义标记属性的已过滤类型。默认情况下,它是java.lang.String,并且JSP容器会在将属性传递给标记之前将该属性强制转换为字符串。因此它调用String数组上的toString。

<%@ attribute name="items" required="true" type="java.lang.String[]" %>

<%@ attribute name="items" required="true" type="[Ljava.lang.String" %>

应该做的伎俩。如果两者都没有,使用

<%@ attribute name="items" required="true" type="java.lang.Object" %>

应该,但不太清楚。

相关问题