Доступ к HashMap с помощью Struts 2 - PullRequest
3 голосов
/ 23 октября 2010

У меня есть хэш-карта, созданная на странице с помощью тега struts2 <s:set>.Это выглядит примерно так:

<s:set var="mymap" value="#request.mymap"/>

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

Ключ генерируется на основе некоторой логики, которую я храню с использованием другого тега <s:set>.Примерно так:

<s:set var="mykey" value="1">

Мне нужно получить значение из хэш-карты, используя этот ключ.И мне нужно показать это.

Как мне просто вызвать функцию get на хэш-карте?

Я пробовал это

<s:property value="#mymap[#mykey]"/>

и это

<s:property value="#mymap[%{#mykey}]"/>

и это

<s:property value="%{#mymap[%{#mykey}}]"/>

Третий, очевидно, не работает из-запроблема вложения.
Но та же логика вложения применима и ко второму случаю из-за способа обработки атрибута значения.Однако ни один, кажется, не работает для меня.

Проблема в том, что мой ключ неизвестен.Это динамически генерируемая строка, основанная на некотором шаблоне.Мне нужно получить доступ к объекту, хранящемуся в хэш-карте, используя этот динамический ключ.И из-за невозможности вложенности ognl я исправляю.

Полагаю, проблема очень проста.Я почти чувствую, что я это понимаю, но каким-то образом решение ускользает от меня.

1 Ответ

3 голосов
/ 23 октября 2010

Полагаю, я использовал другую версию Struts, в которой для оценки выражения требовалось использовать% {}. Я изменил файлы JAR сейчас. Вот что сделало для меня эту работу:

<s:property value="#mymap.[#mykey2]"/>

У меня возникла проблема, потому что я пытался использовать ее в href для тега s :. А без оператора% {} выражение не оценивалось.

Так что, я думаю, я был прав в самом начале. В остальное время я была просто глупой. :>

Обновление: Я написал сообщение в блоге по этому вопросу, на случай, если кому-то будет интересно. http://mycodefixes.blogspot.com/2010/11/struts-2-creating-and-accessing-maps.html

...