Это выполнимо, используя комбинацию bean и тегов jsp, но будьте осторожны - вы делаете это неправильно, а то, что вы хотите, неверно (и, вероятно, не то, что вам нужно).Мое решение работает хорошо, но я думаю, что вы должны выбросить его и изменить свое приложение в любом случае (если это невозможно или если нет большого давления времени).
Если вы используете обычный jsp(в отличие от JSF), тогда HTML это просто шаблон;JSP не знает разницу междуи блины.Формы в JSP не могут делать ничего реального (например, выполнять действия или передавать значения в bean-компоненты).Вы должны создать ванильную HTML-форму, перехватить ее параметры (используя неявную переменную 'param') и действовать.
Такой «отлов и действие» на самом деле не относится к JSP.Это должно быть сделано где-то еще.
В чистом JSP существует возможность перемещения данных между Java-бинами и между Java-бинами и различными свойствами запроса (такими как параметры или файлы cookie), используя jsp:SetProperty.Есть одна загвоздка: записываемые свойства не могут быть динамическими.
Поэтому, чтобы достичь своей цели, вы ДОЛЖНЫ написать немного Java, который принимает некоторые статические свойства (данные икарта цели) и использует ее;более того, использование должно происходить внутри сеттера.Он не может быть действительно универсальным, потому что во время выполнения мы не знаем типы ключей и значений на карте (из-за стирания).
Обращайтесь осторожно:
// MapAppender</p>
<pre><code>package a.b.c;
import java.util.Map;
public class MapAppender {
private String key;
private Float value;
public void setKey(String key) {
this.key = key;
}
public void setValue(Float value) {
this.value = value;
}
public void setMap(Map map) {
if (key != null && value != null) map.put(key, value);
}
}
// How to use it on page:
<jsp:useBean id="object" scope="session" class="a.b.c.ObjectWithMap" />
<jsp:useBean id="appender" scope="request" class="a.b.c.MapAppender" />
<jsp:setProperty name='appender' property='key' value='${param.string}' />
<jsp:setProperty name='appender' property='value' value='${param.float}' />
<jsp:setProperty name='appender' property='map' value='${object.map}' />
<form>
<input name='string' value='test' />
<input name='float' value='3.25' />
<input type="submit" />
</form>