Spring выберите тег в пользовательском теге jsp - PullRequest
0 голосов
/ 01 марта 2012

Я пытаюсь выполнить следующее в теге JSP:

select.tag

<%@ attribute name="id" required="true" %>
<%@ attribute name="path" required="true" %>
<%@ attribute name="items" required="true" %>
<%@ attribute name="itemLabel" required="false" %>
<%@ attribute name="itemValue" required="false" %>

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<form:select path="${path}" id="${id}">
    <form:options items="${items}" itemLabel="${itemLabel}" itemValue="${itemValue}"/>
</form:select>

Использование: (атрибут mycollectionattribute определяется с помощью @ModelAttribute ("mycollectionattribute"))

<tags:select items="${mycollectionattribute}" id="id" path="mybean.selectvalue" itemLabel="label" itemValue="id"/>

Однако я не могу понять, как правильно сопоставить коллекцию элементов со страницы вызова с этим тегом. EL, кажется, не оценивается и отправляется в виде строки, вызывая следующую ошибку:

javax.servlet.ServletException: Type [java.lang.String] is not valid for option items

Я использую довольно старую версию JSTL, поставляемую в комплекте с JBoss 4.04GA, может ли это быть проблемой? Я не уверен, когда выражения EL вычисляются точно, например, $ {x} непосредственно в разметке не оценивается, а работает только в специальных тегах. Может ли обновление решить эту проблему? И если да, то насколько сложно использовать вашу собственную библиотеку JSTL вместо той, что поставляется в комплекте с JBoss?

1 Ответ

0 голосов
/ 01 марта 2012

Решено.

Использовались несоответствующие версии сервлета (указано 2.5, но JBoss 4 использует 2.4), как в виде зависимости, так и в файле web.xml.Так что ЭЛ не работал так, как должен.

...