簡體   English   中英

如何從 JSTL/JSP 標記中的 String[] 屬性中獲取項目

[英]How to get an item from the String[] attribute in JSTL/JSP tag

在普通的 JSP 中,我可以通過 EL ${form.items[0]}獲得第一項,但在 JSP 標記中,相同的表達式會引發以下異常:

javax.el.PropertyNotFoundException:在 class java.lang.String 中找不到屬性 0

${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" %>

應該,但不太清楚。

暫無
暫無

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

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