Show multiple tables in one page by using valueList

First we need speicify a unique name to each table

Table1:

<vlh:root id="(batchList)" scope="request" value="batchList" configName="classicLook" url="?" includeParameters="*">
   <table width="450" class="classicLook" cellspacing="0" ...

 

Table2:

<vlh:root id="(batchDetailList)" scope="request" value="batchDetailList" configName="classicLook" url="?" includeParameters="*">
   <table width="450" class="classicLook" cellspacing="0" ...

 

 

Second we use the name to retrieve the certain specified value list data

Table1:

ValueListHandler valueListHandler = ActionUtil.getValueListHandler(servletRequest.getSession().getServletContext());
    Map filters = new HashMap();
    filters.put("batch_no", batchNo);
    Map parameters = ValueListRequestUtil.getRequestParameterMap(servletRequest, "(batchList)"); // Here we use the table name
    parameters.putAll(filters);
    ValueList vl = valueListHandler.getValueList("batchList", new ValueListInfo(parameters));
    servletRequest.setAttribute("prodScopeList", vl);

 

Table2:

ValueListHandler valueListHandler = ActionUtil.getValueListHandler(servletRequest.getSession().getServletContext());
    Map filters = new HashMap();
    filters.put("batch_no", batchNo);
    Map parameters = ValueListRequestUtil.getRequestParameterMap(servletRequest, "(batchDetailList)"); // Here we use the table name
    parameters.putAll(filters);
    ValueList vl = valueListHandler.getValueList("batchList", new ValueListInfo(parameters));
    servletRequest.setAttribute("prodScopeList", vl);

 

According to the source code of ValueListRequestUtil.getRequestParameterMap

we found that valueListHandler will collect the request parameters by checking the substring of paramter.

public static Map getRequestParameterMap(HttpServletRequest request, String id)
   {
      int lenghtOfId = (id == null) ? 0 : id.length();

      Map parameters = new HashMap(request.getParameterMap().size());
      for (Enumeration keys = request.getParameterNames(); keys.hasMoreElements();)
      {
         String key = (String) keys.nextElement();
         String[] values = request.getParameterValues(key);
         Object value = ((values == null) ? null : (values.length == 1 ? (Object) values[0] : (Object) values));

         if (lenghtOfId > 0)
         {
            if (key.endsWith(id))
            {
               parameters.put(key.substring(0, key.length() - lenghtOfId), value);
            }
         }
         else
         {
            parameters.put(key, value);
         }

      }
      return parameters;
   }

 

So, just keep the name is different in one page, then all tables are available.

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值