开发者

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

开发者 https://www.devze.com 2023-03-28 05:12 出处:网络
In plain JSP I can get first item by EL ${form.items[0]}, but in a JSP tag the same expression throws the following exception:

In plain JSP I can get first item by EL ${form.items[0]}, but in a JSP tag the same expression throws the following exception:

javax.el.PropertyNotFoundException: Could not find property 0 in class java.lang.String

The value of ${form.items} is [Ljava.lang.String;@315e5b60.

JSP tag code is:

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

JSP code is:

<%@ 开发者_如何学编程taglib prefix="t" tagdir="/WEB-INF/tags"%>
<t:input items="${form.items}"></t:input>

Maybe I forgot type of the attribute or something else? Why is the way to access values different in JSP and JSP tag?


You need to specify the expeded type of the custom tag attribute. By default, it's java.lang.String, and the JSP container coerces the attribute to a string before passing it to your tag. It thus calls toString on your String array.

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

or

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

should do the trick. If neither does, using

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

should, but it's less clear.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号