Язык выражений JSP и имена динамических атрибутов

Я пытаюсь сделать что-то, что, кажется, должно быть относительно простым и наталкивается на что-то вроде стены.

Допустим, у меня есть список продуктов, которые я предоставляю в качестве атрибута запроса под именемproducts, Давайте также скажем, что каждый продукт имеетid поле, и что у меня также есть куча атрибутов запроса, установленных в видеselectedProduct_<product-id> чтобы указать, какие из них выбраны.

Я понимаю, что есть лучшие способы представления этой информации, например, размещение всех выбранных идентификаторов вMap и проверяя это, но давайте предположим, что у меня нет доступа к этому подходу по любой причине.

Так что я хотел бы сделать, это итерацияproducts и испускать некоторую разметку, только если естьselectedProduct_... Атрибут установлен для текущего продукта. Что-то вроде:

<c:forEach var="product" items="${products}">
    <c:if test="${! empty selectedProduct_${product.id}}">
        <div class="productId">${product.id}</div>
    </c:if>
</c:forEach> 

Но, конечно, это не работает, так как оно умирает${! empty selectedProduct_${product.id}}.

Что будет работать, если я жестко закодирую идентификатор продукта в выражении, например:

${! empty selectedProduct_17}

... при условии, что "17" является действительным идентификатором продукта. Очевидно, что это не практично, но, надеюсь, это иллюстрирует то, что я пытаюсь достичь. В основном мне нужно:

Determine the correct selectedProduct_... value to use for each iteration in the forEach loop. Something as simple as <c:set var="key" value="selectedProduct_${product.id}"/> would do this, except I'm not sure how to then take key and use it to get the value of the request attribute with that name (without cheating and running literal Java code inside a <% %> block). Get the value of the request attribute whose name I determined in #1. This seems to be the tricky part.

Возможно ли это с использованием чистого JSP / JSTL? Я знаю, что мог бы запустить некоторый код Java внутри<% %> чтобы решить это, но кажется, что это было бы в очень плохой форме. Конечно, существует более элегантное решение?

Ответы на вопрос(1)

Ваш ответ на вопрос