<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 431,  comments - 344,  trackbacks - 0

    目前需求, 客戶上傳excel文件, 有列名, 列名不固定, 想預(yù)覽數(shù)據(jù), 使用Jmesa做table, 有兩種實(shí)現(xiàn)方法. 第一種使用動態(tài)類, 封裝map對象. 第二種是一種巧妙的方法. 下面先介紹第一種方法:
    使用動態(tài)類:

    package com.founder.cst.action;

    import Java.util.ArrayList;
    import Java.util.List;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.commons.beanutils.BasicDynaBean;
    import org.apache.commons.beanutils.BasicDynaClass;
    import org.apache.commons.beanutils.DynaBean;
    import org.apache.commons.beanutils.DynaClass;
    import org.apache.commons.beanutils.DynaProperty;
    import org.jmesa.core.filter.MatcherKey;
    import org.jmesa.facade.TableFacade;
    import org.jmesa.facade.TableFacadeFactory;
    import org.jmesa.view.html.component.HtmlTable;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.RequestMapping;

    import com.founder.cst.common.StringFilterMatcher;

    @Controller
    @RequestMapping
    public class DynaController {

     @RequestMapping
     public String books(final HttpServletRequest request, HttpServletResponse response, ModelMap model){

      DynaClass  bookClass = createBasicDynaClass();
      try {
       List<DynaBean> results = new ArrayList<DynaBean>();
       DynaBean book11 = bookClass.newInstance();
       book11.set("id", "1");
       book11.set("name", "Spring");
       book11.set("price", "18.29");
       results.add(book11);
       DynaBean book22 = bookClass.newInstance();
       book22.set("id", "2");
       book22.set("name", "Hibernate");
       book22.set("price", "12.29");
       results.add(book22);
       DynaBean book33 = bookClass.newInstance();
       book33.set("id", "3");
       book33.set("name", "Python");
       book33.set("price", "17.32");
       results.add(book33);
       
       TableFacade tableFacade = TableFacadeFactory.createTableFacade("booksTable", request);
       
       tableFacade.setColumnProperties("id", "name", "price");
       tableFacade.setMaxRows(10);
       tableFacade.setMaxRowsIncrements(10, 20, 30);
       tableFacade.setItems(results);
       HtmlTable table = (HtmlTable) tableFacade.getTable();
       table.getTableRenderer().setWidth("558px");
       table.getRow().setUniqueProperty("id");
       String html = tableFacade.render();
       model.addAttribute("html", html);
      } catch (IllegalAccessException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      } catch (InstantiationException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      return "books";
     }
     
     public DynaClass createBasicDynaClass() {
      DynaClass dynaClass = null;
            //create basic field for dynaClass
            DynaProperty[] dynaProps = new DynaProperty[3];
            dynaProps[0] = new DynaProperty("id");
            dynaProps[1] = new DynaProperty("name", String.class);
            dynaProps[2] = new DynaProperty("price", String.class);
            //create map filed for dynaClass
            dynaClass = new BasicDynaClass("first", BasicDynaBean.class, dynaProps);
            return dynaClass;
        }


    }

    下面第二種:
    @RequestMapping
     public String bookslist(final HttpServletRequest request, HttpServletResponse response, ModelMap model){
      List<Map<String, String>> books = new ArrayList<Map<String, String>>();
      Map<String, String> book1 = new HashMap<String, String>();
      book1.put("id", "1");
      book1.put("name", "Spring");
      book1.put("price", "18.29");
      books.add(book1);
      
      Map<String, String> book2 = new HashMap<String, String>();
      book2.put("id", "2");
      book2.put("name", "Hibernate");
      book2.put("price", "28.98");
      books.add(book2);
      
      Map<String, String> book3 = new HashMap<String, String>();
      book3.put("id", "3");
      book3.put("name", "Python");
      book3.put("price", "38.22");
      books.add(book3);
      
      model.addAttribute("books", books);
      return "booklist";
     }

    頁面為:

    <jmesa:tableFacade
         id="booksTable"
         items="${books}"
         maxRows="10"
         maxRowsIncrements="10,20,30"
         var="book">
         <jmesa:htmlTable width="630px">
          <jmesa:htmlRow>
           <c:forEach items="${book}" var="b">
           <jmesa:htmlColumn property="${b.key}" title="${b.key}" filterable="false"/>
           </c:forEach>
          </jmesa:htmlRow>
         </jmesa:htmlTable>
        </jmesa:tableFacade>

    這里注意property中的值.

    今天查看源碼, 和昨天想象一樣,  jmesa在渲染單元格的時(shí)候, 分兩種, 一種就是map類型, 使用get(key)來取值, 另一種就是普通的javabean對象, 使用getPropertyName()取值渲染.

    /*
     * Copyright 2004 original author or authors.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *    http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    package org.jmesa.util;

    import Java.util.Collection;
    import Java.util.Map;

    import org.apache.commons.beanutils.PropertyUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    /**
     * General utilities to process the Collecton of Beans or the Collection of
     * Maps. Most methods wrap or add value to the commons Beanutils.
     *
     * @since 2.1
     * @author Jeff Johnston
     */
    public class ItemUtils {

        private static final Logger logger = LoggerFactory.getLogger(ItemUtils.class);
        public static final String JMESA_ITEM = "jmesa-item";

        private ItemUtils() {
            // hide constructor
        }

        /**
         * Get the value from the Bean or Map by property.
         *
         * @param item The Bean or Map.
         * @param property The Bean attribute or Map key.
         * @return The value from the Bean or Map.
         */
        public static Object getItemValue(Object item, String property) {
            Object itemValue = null;

            try {
                if (item instanceof Map) {
                    itemValue = ((Map<?, ?>) item).get(property);
                    if (itemValue != null) {
                        return itemValue;
                    }

                    // ports such as the tags will store the original bean
                    Object bean = ((Map<?, ?>) item).get(JMESA_ITEM);
                    if (bean == null) {
                        logger.debug("the map does not have property " + property);
                        return null;
                    }

                    itemValue = getItemValue(bean, property);
                } else {
                    itemValue = PropertyUtils.getProperty(item, property);
                }
            } catch (Exception e) {
                logger.debug("item class " + item.getClass().getName() + " does not have property " + property);
            }

            return itemValue;
        }

        /**
         * Get the Class for the property.
         *
         * @param items The Collection of Beans or Maps.
         * @param property The Bean attribute or Map key.
         * @return The Class for the property.
         */
        public static Class<?> getPropertyClassType(Collection<?> items, String property)
            throws Exception {

            Object item = items.iterator().next();

            if (item instanceof Map) {
                for (Object object : items) {
                    Map map = (Map) object;
                    Object val = map.get(property);

                    if (val == null) {
                        continue;
                    }

                    return val.getClass();
                }
            }

            return PropertyUtils.getPropertyType(item, property);
        }
    }

    posted on 2009-03-19 17:43 周銳 閱讀(1309) 評論(1)  編輯  收藏 所屬分類: Ajax
    主站蜘蛛池模板: 国产美女亚洲精品久久久综合| h片在线播放免费高清 | 亚洲人成精品久久久久| 男人的好看免费观看在线视频| 97无码人妻福利免费公开在线视频| 亚洲精品欧美综合四区| 亚洲无限乱码一二三四区| 国产亚洲色婷婷久久99精品| 高清在线亚洲精品国产二区| 精品久久久久国产免费| 99在线免费观看视频| 中国国语毛片免费观看视频| 青青免费在线视频| 亚洲中文字幕乱码一区| 亚洲欧洲尹人香蕉综合| 亚洲电影一区二区三区| 亚洲中文字幕无码一久久区| 亚洲第一福利网站在线观看| 日韩一区二区免费视频| 最近最新的免费中文字幕| 4hu四虎最新免费地址| 最近免费中文字幕大全免费| 国产精品99精品久久免费| 国产又黄又爽又大的免费视频 | 一二三四视频在线观看中文版免费 | 亚洲jizzjizz少妇| 久久久国产亚洲精品| 亚洲一卡2卡3卡4卡国产网站| 久久精品国产亚洲AV高清热| 久久精品夜色国产亚洲av| 精品久久久久久亚洲| 亚洲最大激情中文字幕| 国产日产亚洲系列最新| 国产精品亚洲玖玖玖在线观看| 五月天婷亚洲天综合网精品偷| 国产免费人视频在线观看免费| 国产精品国产午夜免费福利看| 女人与禽交视频免费看| 日韩在线视频免费看| 免费jjzz在线播放国产| 亚洲国产精品自在拍在线播放|