Доступ к значению ключа карты в Struts2 - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть переменная карта в базе данных, которая возвращается, и я хочу отобразить детали на веб-странице, внешний интерфейс - Struts2. Я попробовал это

 <html:iterator value="fields" id="field">
    <html:textfield name="#field.value" key="#field.value" label="#field.key"/> 
</html:iterator>

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

Идея состоит в следующем:

Name: [  ]
Random: [  ]
Something: [   ] 

как текстовые поля в форме ...

Как я могу сделать это просто?

Ответы [ 3 ]

5 голосов
/ 21 ноября 2011

Ну не уверен, как это сделать в <html:iterator>, так как никогда не видел его в теге struts2, libor не сталкивался с этим.

будет использовать простой <iteraor> тег

при условии, что у нас listmap как карта

<s:iterator value="listmap" status="stat">
                    <s:iterator>
                        <tr>
                            <th><s:property value="#stat.index"/></th>
                            <td><s:property value="key"/></td>
                            <td><s:property value="value"/></td>
                        </tr>
                    </s:iterator>
                </s:iterator>

внутренний итератор является контекстно-зависимым, он будет использовать последнее значение, помещенное в стек. Атрибут status дает нам объект IteratorStatus для каждой итерации, что полезно, если мы хотим узнать текущую итерацию.

2 голосов
/ 21 ноября 2011

Вы должны использовать теги формы на основе карты, если у вас есть произвольно названные значения для отправки обратно в действие.См. collection docs.

<s:form ...>
  <s:iterator value="fields" var="field">
    <s:textfield name="sortingKey['%{#field.key}']" label="%{key}" value="%{value}" />
  </s:iterator>
</s:form>

Предоставьте получатель / установщик для карты в действии.

Кроме того, если вы используете Struts 2.1+, id атрибут <s:iterator> устарел;переменная цикла должна быть названа с использованием атрибута var.

1 голос
/ 21 ноября 2011

префикс "html" является тегом struts2?

если вы используете taglib structs2, давайте использовать префикс s:

, вы можете сделать это следующим образом

итерировать ключи карты, а затем получить доступ к значению по ключу.

<s:iterator value="#someMap.keys" var="key">
   <s:textfield value="#someMap[key]" name="someMap[#key]"/>
</s:iterator>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...