当前位置 : 主页 > 编程语言 > java >

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

来源:互联网 收集:自由互联 发布时间:2021-06-25
在普通的JSP中,我可以通过EL ${form.items [0]}获得第一个项目,但是在JSP标记中,同一个表达式会抛出以下异常: javax.el.PropertyNotFoundException: Could not find property 0 in class java.lang.String ${form.item
在普通的JSP中,我可以通过EL ${form.items [0]}获得第一个项目,但是在JSP标记中,同一个表达式会抛出以下异常:

javax.el.PropertyNotFoundException: Could not find property 0 in class
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标记中访问值的方式不同?

您需要指定自定义标记属性的已扩展类型.默认情况下,它是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" %>

应该,但不太清楚.

网友评论