• 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一些标签库的使用了,觉得那种尖括号括起来的那种方式在后期维护方面不好用,渐渐的摒弃那种最原始的方法。

  • 相关阅读:
    数据库创建用户SQL
    团队总结和展示
    第十三周总结
    梦断代码02
    第十二周进度博客
    团队冲刺第十五天
    团队冲刺第十四天
    团队冲刺第一阶段评价
    梦断代码01
    第十一周进度博客
  • 原文地址:https://www.cnblogs.com/lucky2u/p/3498978.html
Copyright © 2020-2023  润新知