JSP頁面中的js方法遍歷后台傳來的自定義對象的List


  在java web開發的過程中,遇到的一種情況就是后台傳到前台的jsp頁面中是一個自定義對象的List,然后jsp頁面並不是直接將這些List展示在頁面上,而是通過某些js方法的觸發才去顯示指定的部分數據。在此之前,我一直通過<%%>把JAVA代碼嵌套在jsp頁面中進行遍歷,我覺得摻雜在一起太繁瑣了,所以尋求更優的方法。

  今天通過一些大神的指導,找到了解決方案,在此做一下記錄。

 

1. 后台傳遞的List中對象都是自定義的,需要先轉換成Json對象(用到下面的工具類-從其他網站拷貝);

 1 package dsh.bikegis.tool;
 2 
 3 import java.beans.IntrospectionException;
 4 import java.beans.Introspector;
 5 import java.beans.PropertyDescriptor;
 6 import java.util.List;
 7 
 8 /**
 9  * json的操作類
10  * @author NanGuoCan
11  *
12  */
13 public class JsonUtil {
14       
15         /**
16           * @param object
17           *             任意對象
18           * @return java.lang.String
19           */  
20         public static String objectToJson(Object object) {   
21              StringBuilder json = new StringBuilder();   
22             if (object == null) {   
23                  json.append("\"\"");   
24              } else if (object instanceof String || object instanceof Integer) { 
25                  json.append("\"").append(object.toString()).append("\"");  
26              } else {   
27                  json.append(beanToJson(object));   
28              }   
29             return json.toString();   
30          }   
31       
32         /**
33           * 功能描述:傳入任意一個 javabean 對象生成一個指定規格的字符串
34           *
35           * @param bean
36           *             bean對象
37           * @return String
38           */  
39         public static String beanToJson(Object bean) {   
40              StringBuilder json = new StringBuilder();   
41              json.append("{");   
42              PropertyDescriptor[] props = null;   
43             try {   
44                  props = Introspector.getBeanInfo(bean.getClass(), Object.class)   
45                          .getPropertyDescriptors();   
46              } catch (IntrospectionException e) {   
47              }   
48             if (props != null) {   
49                 for (int i = 0; i < props.length; i++) {   
50                     try {  
51                          String name = objectToJson(props[i].getName());   
52                          String value = objectToJson(props[i].getReadMethod().invoke(bean));  
53                          json.append(name);   
54                          json.append(":");   
55                          json.append(value);   
56                          json.append(",");  
57                      } catch (Exception e) {   
58                      }   
59                  }   
60                  json.setCharAt(json.length() - 1, '}');   
61              } else {   
62                  json.append("}");   
63              }   
64             return json.toString();   
65          }   
66       
67         /**
68           * 功能描述:通過傳入一個列表對象,調用指定方法將列表中的數據生成一個JSON規格指定字符串
69           *
70           * @param list
71           *             列表對象
72           * @return java.lang.String
73           */  
74         public static String listToJson(List<?> list) {   
75              StringBuilder json = new StringBuilder();   
76              json.append("[");   
77             if (list != null && list.size() > 0) {   
78                 for (Object obj : list) {   
79                      json.append(objectToJson(obj));   
80                      json.append(",");   
81                  }   
82                  json.setCharAt(json.length() - 1, ']');   
83              } else {   
84                  json.append("]");   
85              }   
86             return json.toString();   
87          }
88 }

2.后台直接把轉換后的String放在request里

3.前台javascript讀取

 1  <script type="text/javascript">
 2      function newLiftPermissionScope() {
 3          var list = ${liftTypeDicListJson};//讀取request里的liftTypeDicListJson對象
 4          var mhtml = "<tr><td><table><tr><td><select><option>";
 5          console.log("listtype:"+typeof(list));//輸出list的類型:Object
 6          $(list).each(function(i,dic){
 7              console.log("dicName:"+dic.dicName);//遍歷自定義對象,並輸出自定義對象的dicName屬性
 8          });
 9          mhtml+="</option></select></td><td></td></tr></table></td></tr>";
10         
11      }
12  </script>

通過這種方法,貌似解決我在jsp里繼續嵌套爪哇代碼的問題了。我現在基本上學會了el,jstl一些標簽庫的使用了,覺得那種尖括號括起來的那種方式在后期維護方面不好用,漸漸的摒棄那種最原始的方法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM