Это напрямую невозможно. Существуют теги <c:set>
и <jsp:setProperty>
, которые позволяют вам устанавливать свойства в полноценном javabean с помощью метода установки. Однако интерфейс List
не имеет установщика, а только метод add()
.
A обходной путь будет заключаться в том, чтобы обернуть список в настоящий javabean, например, так:
public class ListBean {
private List<Object> list = new ArrayList<Object>();
public void setChild(Object object) {
list.add(object);
}
public List<Object> getList() {
return list;
}
}
и установите его
<jsp:useBean id="listBean" class="com.example.ListBean" scope="request" />
<jsp:setProperty name="listBean" property="child" value="foo" />
<jsp:setProperty name="listBean" property="child" value="bar" />
<jsp:setProperty name="listBean" property="child" value="waa" />
Но это мало что значит. Как ее решить правильно, зависит от единственного функционального требования. Если вы хотите сохранить List
по запросу GET, вам следует использовать сервлет предварительной обработки. Создайте сервлет, который выполняет в методе doGet()
следующее:
List<String> list = Arrays.asList("foo", "bar", "waa");
request.setAttribute("list", list);
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
Когда вы вызываете сервлет по его URL-адресу, список находится в перенаправленном JSP, доступном по
${list}
без необходимости в старомодных <jsp:useBean>
тегах. В сервлете вы можете свободно писать код Java обычным способом. Таким образом, вы можете использовать JSP только для чистого представления без необходимости сглатывать / взламывать логику предварительной обработки тегами <jsp:useBean>
.
Смотри также: