/*
* 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);
}