ParamMapUtil -通过java反射取得class参数并操作参数等工具类

/*
 * Created on Jun 24, 2011
 * ParamMapUtil.java
 *
 * Copyright 2004 Hintsoft, LTD. All rights reserved.
 * HINTSOFT PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 * $Id: ParamMapUtil.java,v 1.1 2011/11/14 03:07:30 liupan Exp $
 * $Author: liupan $ ( mailto:huangcc@hintsoft.com.cn )
 * $Revision: 1.1 $
 *
 */
package base.util;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;

import javax.persistence.Column;
import javax.persistence.Id;

/**
 * @author huangcc
 *
 */
public class ParamMapUtil<T> {
 
 public void getParamMap(Object obj,Class cla, Map<String,Object> param){
  try {
  T t = (T) obj;
  if(t==null){
   return;
  }
  Field[] field = cla.getDeclaredFields();
  for (Field field2 : field) {
   String fieldName = field2.getName();
   if (field2.getAnnotation(Column.class) != null) {
    String beanid = field2.getAnnotation(Column.class).name();
    if (!StringUtils.isEmpty(beanid)) {
     String meName = "get" + fieldName.substring(0, 1).toUpperCase()
       + fieldName.substring(1, fieldName.length());
     Method m = cla.getDeclaredMethod(meName);
     Object o=m.invoke(t);
     if(o!=null){
      boolean flag=false;
      if(o.getClass().getSimpleName().equals("Integer")){
       if(field2.getAnnotation(Id.class)!=null){
        if(((Integer) o).intValue()!=0){
         flag=true;
        }
       }else{
        flag=true;
       }
       
      }else if(o.getClass().getSimpleName().equals("String")){
       if(!StringUtils.isEmpty((String) o)){
        flag=true;
       }
      }else if(o.getClass().getSimpleName().equals("Long")){
       if(field2.getAnnotation(Id.class)!=null){
        if(((Long) o).longValue()!=0){
         flag=true;
        }
       }else{
        flag=true;
       }
      }
      if(flag){
       param.put(fieldName, o);
      }
     }
    }

   }
  }
  } catch (IllegalAccessException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (SecurityException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (NoSuchMethodException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IllegalArgumentException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (InvocationTargetException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

}

---getParamMap (Object obj,Class cla, Map<String,Object> param) 使用说明:

public List<Menu> getMenuByParentName(String parentName, Menu menu, int offset, int maxRow) throws Exception {
  List<Menu> list = new ArrayList<Menu>();
  Map<String, Object> param = new HashMap<String, Object>();
  if (StringUtils.isEmpty(parentName)) {
   param.put("type,eq", 1);
  } else {
   param.put("parentName,eq", parentName);
  }
  ParamMapUtil<Menu> mapUtil = new ParamMapUtil<Menu>();
  mapUtil.getParamMap(menu, Menu.class, param);
  list = this.getMenuList(param, offset, maxRow);
  return list;
 }

 

public int getMenuByParentNameCount(String parentName, Menu menu) throws Exception {
  Map<String, Object> param = new HashMap<String, Object>();
  if (StringUtils.isEmpty(parentName)) {
   param.put("type,eq", 1);
  } else {
   param.put("parentName,eq", parentName);
  }
  // if(!StringUtils.isEmpty(nnnn)){
  // param.put("name", nnnn);
  // }
  ParamMapUtil<Menu> mapUtil = new ParamMapUtil<Menu>();
  mapUtil.getParamMap(menu, Menu.class, param);
  // if(menu!=null){
  // if(!StringUtils.isEmpty(menu.getName())){
  // param.put("name", menu.getName());
  // }
  // }
  return this.getMenuListCount(param);
 }

 

@Controller
@RequestMapping("/menu")
@RemoteProxy(creator = SpringCreator.class, creatorParams = @Param(name = "beanName", value = "menuController"), name = "menuDwr")
public class MenuController {

 @RequestMapping(value = "/ajaxlist")
 public String ajaxlist(HttpServletRequest request, HttpServletResponse response, Form form) {
  String menuName = ParamUtils.getParameter(request, "menuName", null);
  String searchSessionKey = ParamUtils.getParameter(request, "searchSessionKey", null);
  if (StringUtils.isEmpty(searchSessionKey)) {
   Map<String, Object> param = new HashMap<String, Object>();
   param.put("form", form);
   param.put("menuName", menuName);
   searchSessionKey = "searchSessionKey" + System.currentTimeMillis();
   request.getSession().setAttribute(searchSessionKey, param);

  } else {
   Map<String, Object> param = (Map<String, Object>) request.getSession().getAttribute(searchSessionKey);
   if (param.containsKey("form")) {
    form = (Form) param.get("form");
   }
   if (param.containsKey("menuName")) {
    menuName = (String) param.get("menuName");
   }
  }
  request.setAttribute("searchSessionKey", searchSessionKey);
  String parentMenuName = ParamUtils.getParameter(request, "parentMenuName", null);
  if (StringUtils.isEmpty(parentMenuName)) {
   parentMenuName = null;
  }
  if (StringUtils.isEmpty(menuName)) {
   menuName = null;
  }
  request.setAttribute("parentMenuName", parentMenuName);
  request.setAttribute("menuName", menuName);
  request.setAttribute("menu", form.getMenu());
  try {
   int total = this.menuService.getMenuByParentNameCount(menuName, form.getMenu());
   Pagination pagination = new Pagination(request, 3, total);
   // List<Menu> list =
   // this.menuService.getMenuByParentName(menuName,nnnn,0,0);
   List<Menu> list = this.menuService.getMenuByParentName(menuName, form.getMenu(), pagination.getOffset(),
     pagination.getMaxRow());
   if (list != null && list.size() > 0) {
    Collections.sort(list, MenuComparator.getDefaultInstance());
   }
   request.setAttribute("menuList", list);
   request.setAttribute("pagination", pagination);
  } catch (Exception e) {
   logger.error(e.getMessage(), e);
  }
  return "forward:/menu/ajaxList.jsp";
     }

}

---调用ajax的jsp画面:

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c"%>
<%@ taglib prefix="su" uri="/WEB-INF/tld/site-utils.tld"%>
<link href="/css/inettuts.css" rel="stylesheet"></link>
 <style>
  .line{font-size:12px; color:#000; background:#aed34f; width:302px; padding:2px;}
  .hover{background:#007ab8; color:#fff;}
  </style>
<script type="text/javascript">
var index=1;
var c=1;
var max=5;
var testmap=new Map();
var defauleFrom;
function showDiv(idx){
 for(var l=1;l<=5;l++){
  $('#div'+l).hide('fast');
 }
 $('#div'+idx).show('fast');
 index=idx;
 if(testmap.containsKey('div'+index)){
  var html=testmap.get('div'+index);
  $('#formDiv').html(html.value);
 }else{
  $('#searchMenuForm').resetForm();
  var html=document.getElementById('formDiv').innerHTML;
  testmap.put('div'+index,html);
 }
}


function searchMenu(){
 //$('#div'+index).show();
 var html=document.getElementById('formDiv').innerHTML;
 if(testmap.containsKey('div'+index)){
  testmap.remove('div'+index);
 }
 testmap.put('div'+index,html);
 gotoPage('1','/menu/ajaxlist',10,10,'searchMenuForm',null,'div'+index,10);
 $('#columns').hide('fast');
 $('#div'+index).show('fast');
}


$(document).ready(function() {
 defauleFrom=document.getElementById('formDiv').innerHTML;
 $('#addSearchMenu').click(function(){
  if(c<max){
   c++;
   $('#searPage').append('<a href="javascript:showDiv('+c+')">'+c+'</a> | ');
   
   $('#formDiv').html(defauleFrom);
   index=c;
   for(var l=1;l<=c;l++){
    $('#div'+l).hide();
   }
   $('#div'+c).show();
   if(c==max){
    $('#addSearchDiv').hide();
   } 
  }
  
  //gotoPage('1','/menu/ajaxlist',10,10,null,param,'div2',10);
 });
 $('#closeSearchMenu').click(function(){
  
  for(var l=1;l<=c;l++){
   $('#div'+l).hide('fast');
  }
  $('#columns').show('fast');
 });
 
});

function test(id){
 $('#div'+id).show('fast');
 $('#columns').hide('fast');
}

function goto(number,currentPage,totalPage,url,param,pageSize,sessionKey){
 if(number=="-1000"){
  number=$('#div'+index).find('#pageNum').val();
  param="?currentPage="+number+"&pageSize=" + pageSize;
 }
 param=param+"&searchSessionKey="+sessionKey;
 goto1(number,currentPage,totalPage,url,param,pageSize,'div'+index,'searchMenuForm');
}
</script>

<div id="popshow" style="cursor: pointer">
</div>
<div id="searPage">
 <a href="javascript:showDiv(1)">1</a> |
</div>
<div id="addSearchDiv">
 <a href="#" id="addSearchMenu">+</a> | <a href="#" id="closeSearchMenu">×</a>
</div>
 <div id="formDiv">
<form action="/menu/ajaxlist" method="post" id="searchMenuForm">
 <input type="text" name="menu.name"/>
 <select name="menu.gradation">
  <option value="">请选择</option>
  <option value="1">1</option>
  <option value="2">2</option>
 </select>
 <input type="button" value="查询" οnclick="searchMenu();"/>
</form>
</div>
<div id="div1" style="display:none">

</div>

<div id="div2" style="display:none">

</div>

<div id="div3" style="display:none">

</div>

<div id="div4" style="display:none">

</div>

<div id="div5" style="display:none">

</div>

 

<script type='text/javascript' src="/js/inettuts.js"></script>

 

---------js函数 gotoPage的方法实体:pagination.js


var divId;
function isdigit(s) {
 var r, re;
 re = /\d*/i;
 r = s.match(re);
 return (r == s) ? true : false;
}
function goto1(number, currentPage, totalPage, url, param, pageSize, divId, formId) {
 param = param.substring(1, param.length);
 gotoPage(number, url, currentPage, totalPage, formId, param, divId, pageSize);
}
function gotoPage(number, url, currentPage, totalPage, formId, urlAppend, divId, pageSize) {
 this.divId = divId;
 if (number == "" || !isdigit(number)) {
  alert("\u8bf7\u8f93\u5165\u6570\u5b57!");
  return;
 }
 if (number == currentPage) {
  //alert('当前页已经是第'+currentPage+"页!");
  return;
 }
 if (number > totalPage) {
  alert("\u603b\u5171" + totalPage + "\u9875,\u60a8\u8f93\u5165\u7684\u9875\u4e0d\u5b58\u5728\uff01");
  return;
 }
 $("#" + divId).html("<img src=\"/images/loading.gif\"  />");
 if (formId == null) {
  $.ajax({type:"POST", url:url, data:urlAppend, success:function (data, status) {
   $("#" + divId).html('');
   $("#" + divId).html(data);
  }, complete:function (xqu, ts) {
   xqu = null;
  }});
 } else {
  $("#" + formId).attr("action", url + "?" + urlAppend);
  ajaxSubmitForm(formId, validate, loadPagSuc);
 }
}
function validate(formData, jqForm, options) {
 return true;
}
function loadPagSuc(responseText, statusText) {
 $("#" + divId).html("");
 $("#" + divId).html(responseText);
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值