主要針對以下幾種情況的Map:
- private Map<String, String> strMap = new HashMap<String, String>();
- private Map<String, Person> perMap = new HashMap<String, Person>();
- private Map<String, String[]> strArryMap = new HashMap<String, String[]>();
- private Map<String, List<Person>> perLstMap = new HashMap<String, List<Person>>();
下面給出一個示例
1).ExpressMapAction.java
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import com.expre.struts2.bean.Person;
- import com.expre.struts2.bean.Phone;
- import com.opensymphony.xwork2.ActionSupport;
- public class ExpressMapAction extends ActionSupport {
- private static final long serialVersionUID = -4251480679223607716L;
- private Map<String, String> strMap = new HashMap<String, String>();
- private Map<String, Person> perMap = new HashMap<String, Person>();
- private Map<String, String[]> strArryMap = new HashMap<String, String[]>();
- private Map<String, List<Person>> perLstMap = new HashMap<String, List<Person>>();
- //get&set方法,這裏都省略了
- @Override
- public String execute() throws Exception {
- // 值爲字符串
- strMap.put("first", "zxx");
- strMap.put("second", "lsx");
- strMap.put("third", "wxh");
- // 值爲javabean對象
- Person person = new Person("001", "zxx", 22);
- person.setPhone(new Phone("apple", 18957157189L));
- perMap.put("one", person);
- person = new Person("002", "lsx", 25);
- person.setPhone(new Phone("HTC", 18957157187L));
- perMap.put("two", person);
- // 數組處理
- strArryMap.put("arr1", new String[] { "1", "310000", "hz" });
- strArryMap.put("arr2", new String[] { "2", "310001", "xh" });
- strArryMap.put("arr3", new String[] { "3", "310002", "sc" });
- //list對象處理
- List<Person> list=new ArrayList<Person>();
- list.add(new Person("001", "zxx", 22));
- list.add(new Person("002", "lsx", 25));
- perLstMap.put("one", list);
- list=new ArrayList<Person>();
- list.add(new Person("003", "wlx", 26));
- list.add(new Person("004", "hzx", 28));
- perLstMap.put("two", list);
- return "result";
- }
- }
2).strMap.jsp
- <html>
- <body>
- <ul>
- <li>訪問Map:<s:property value="strMap"/></li>
- <li>訪問Map中某個元素:
- <s:property value="strMap.first"/> |
- <s:property value="strMap['second']"/> |
- <s:property value="strMap[\'third\']"/>
- </li>
- <li>訪問Map中所有的key:<s:property value="strMap.keys"/></li>
- <li>訪問Map中所有的value:<s:property value="strMap.values"/></li>
- <li>訪問容器的大小:
- <s:property value="strMap.size()"/> |
- <s:property value="strMap.size"/>//這是map特別的地方
- </li>
- <li>迭代循環取值,最簡單
- <s:iterator value="strMap" id="entry">
- <s:property value="#entry"/>{
- key: <s:property value="key"/>
- value:<s:property value="value"/>}|
- </s:iterator>
- </li>
- <li>迭代循環取值
- <s:iterator value="strMap.keySet()" id="key">
- <s:property value="key"/>或<s:property value="#key"/>:
- <s:if test="strMap[#key]!=null">
- <s:property value="strMap.get(#key)"/> |
- </s:if>
- </s:iterator>
- </li>
- <li>迭代循環取數組值
- <s:iterator value="strMap" id="entry">
- <s:property value="#entry"/>{
- <s:property value="value[0]"/>
- <s:property value="value[1]"/> |
- <s:property value="value[2]"/> }
- </s:iterator>
- </li>
- <li>迭代循環取對象值,最直接:
- <ul>
- <s:iterator value="perMap" id="entry">
- <li>
- <s:property value="#entry"/> {
- ID:<s:property value="value.ID"/>
- Name:<s:property value="value.name"/>
- Age:<s:property value="value.age"/> }|
- </li>
- </s:iterator>
- </ul>
- </li>
- <li>迭代循環取對象的屬性值
- <s:iterator value="perMap.keySet()" id="key">
- <s:property value="#key"/>:
- <s:iterator value="perMap.get(#key)">
- <s:property value="ID"/>
- <s:property value="name"/>
- <s:property value="phone.name"/>
- </s:iterator>|
- </s:iterator>
- </li>
- <li>稍複雜的迭代
- <s:iterator value="perLstMap" id="entry">
- <s:set name="total" value="#entry.value.size"/>
- <s:iterator value="#entry.value" status="s">
- <s:if test="#s.first">
- <s:property value="#entry.key"/>:共${total}條
- </s:if> {
- <s:property value="ID"/> |
- <s:property value="name"/> |
- <s:property value="age"/>
- };
- </s:iterator>
- </s:iterator>
- </li>
- </ul>
- </body>
- </html>