Как получить значение свойства компонента, когда само имя свойства является динамической переменной

Я пытаюсь записать пользовательский тег JSPX, который читает значение данного свойства компонента от каждого объекта в данном списке с названием того свойства, переданного тегу как атрибут JSP. Тег выглядел бы примерно так:

<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core"
        xmlns:jsp="http://java.sun.com/JSP/Page"
        version="2.0">
    <jsp:output omit-xml-declaration="yes"/>

    <jsp:directive.attribute name="items" type="java.lang.Iterable"
        required="true" description="The items whose properties are to be read"
        rtexprvalue="true"/>
    <jsp:directive.attribute name="propertyName" type="java.lang.String"
        required="true" description="The name of the bean property to read"
        rtexprvalue="true"/>

    <c:forEach items="${items}" var="item">
        <!-- This is the bit that doesn't work -->
        <jsp:getProperty name="item" property="${propertyName}" />
    </c:forEach>

</jsp:root>

Проблема состоит в том что property атрибут jsp:getProperty тег, кажется, не принимает выражение, только литеральное значение. Таким образом, это работало бы, но бесполезно мне (поскольку я не знаю имя свойства до времени выполнения):

<jsp:getProperty name="item" property="firstName" />

Ошибка, которую я получаю:

org.apache.jasper.JasperException: org.apache.jasper.JasperException:
PWC6054: Cannot find any information on property '${propertyName}' in
a bean of type 'com.example.FooBar'

Спасибо за любую справку.

7
задан BalusC 7 January 2016 в 07:52
поделиться

1 ответ

Если вы хотите использовать динамические имена свойств, используйте скобочную нотацию.

<c:forEach items="${items}" var="item">
    ${item[propertyName]}
</c:forEach>
15
ответ дан 6 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: