ввод hashmap в jsp - PullRequest
       2

ввод hashmap в jsp

1 голос
/ 14 февраля 2011

может кто-нибудь сказать мне, как установить значение hashmap в jsp?

Объект -

машина с:

private Map<String, Float> myHashMap = new HashMap<String, Float>();

в jsp.как это

<input type='hidden' name='myobject.myHashmap["setvalue string"]' value='my value for string' />
<input type='hidden' name='myobject.myHashmap["setvalue float"]' value='my value for float' />

1 Ответ

2 голосов
/ 14 февраля 2011

Это выполнимо, используя комбинацию bean и тегов jsp, но будьте осторожны - вы делаете это неправильно, а то, что вы хотите, неверно (и, вероятно, не то, что вам нужно).Мое решение работает хорошо, но я думаю, что вы должны выбросить его и изменить свое приложение в любом случае (если это невозможно или если нет большого давления времени).

  1. Если вы используете обычный jsp(в отличие от JSF), тогда HTML это просто шаблон;JSP не знает разницу междуи блины.Формы в JSP не могут делать ничего реального (например, выполнять действия или передавать значения в bean-компоненты).Вы должны создать ванильную HTML-форму, перехватить ее параметры (используя неявную переменную 'param') и действовать.

  2. Такой «отлов и действие» на самом деле не относится к JSP.Это должно быть сделано где-то еще.

  3. В чистом JSP существует возможность перемещения данных между Java-бинами и между Java-бинами и различными свойствами запроса (такими как параметры или файлы cookie), используя jsp:SetProperty.Есть одна загвоздка: записываемые свойства не могут быть динамическими.

  4. Поэтому, чтобы достичь своей цели, вы ДОЛЖНЫ написать немного Java, который принимает некоторые статические свойства (данные икарта цели) и использует ее;более того, использование должно происходить внутри сеттера.Он не может быть действительно универсальным, потому что во время выполнения мы не знаем типы ключей и значений на карте (из-за стирания).

  5. Обращайтесь осторожно:

// 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>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...