Получение значения URL из HashMap на странице JSP (Использование Struts2) - PullRequest
2 голосов
/ 09 августа 2010

Я пытаюсь заставить мою страницу ссылаться на определенный URL, который хранится в HashMap (ключ - это какое-то имя, а значение - это URL, на который я хочу сослаться).Я не очень хорош в описании этого, но вот мой код:

Для страницы JSP:

<table>
  <s:iterator value="dependenciesList" id="dependency">
    <tr><td>
    <a href="<s:url value="productDocumentationMap.getKey(%{dependency})"/>">
    <s:property value="dependency"/> </a>
    </td></tr>
  </s:iterator> 
  </table>

Примечание: productDocumentationMap - это HashMap, равный <String, String>,, а dependenciesList - этоArrayList<String>.

Например, если dependenciesList содержит три элемента [A, B, C], первая ссылка будет ссылаться на что-то вроде: http: ///productDocumentationMap.getKey (A), но я хочудля ссылки должно быть действительное значение

productDocumentationMap.getKey("A");

Я знаю, что могу делать что-то глупое (я все еще новичок во всем этом бизнесе Struts2), но есть ликак я могу получить свою ссылку на работу?Спасибо!

1 Ответ

2 голосов
/ 09 августа 2010

В OGNL вы можете получить доступ к карте, используя "mapName [indexName]", где indexName - это нужный ключ.

например,

 <a href="<s:url value='productDocumentationMap[#dependency]'/>">

Я думаю, что это правильный синтаксисдля разрешения 'зависимости' как переменной, а не как строки 'зависимости', но это должно вызвать 'getProductDocumentationMap ()', и, если он возвращает объект Map, попытаться найти значение итератора,Я предполагаю, что вам действительно нужно значение, а не ключ, поскольку ключом является сама «зависимость».

На этой странице приведены некоторые примеры выражений OGNL, которые могут оказаться полезными в качестве ссылки.Половину времени я обнаруживаю, что в итоге играю без скобок,% {} и / или #, пока все не заработает.:-)

http://www.vaannila.com/struts-2/struts-2-example/struts-2-ognl-expression-language-example-1.html


Для вашего дополнительного вопроса:

Я использую это для проверки нулей на предмет простых свойств и включения раздела.Я предполагаю, что это может быть применено к возвращаемым значениям из карт.

<s:if test="%{licenseStatusString != null}">
 ... something that uses licenseStatusString
</s:if>
<s:else>
 ... optional thing to include if the license status string is null.
</s:else>

возможно

<s:if test="%{productDocumentationMap[#dependency] != null}">

Попробуйте и посмотрите, работает ли это.Вероятно, некоторая перестановка этого.

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