afunms

My Software,My Dream—Forge a more perfect NMS product.

new framework(4)--fetch request parameters value via reflect

最讨厌就是写一大堆request.getParameter,新架构中利用反射自动提取request中的参数值,
然后把它们封闭成一个dto,真是太爽了。

 

    protected DtoInterface extractData(Class<? extends DtoInterface> clazz)
    
{
        DtoInterface dto 
= null;
        
try
        
{
            dto 
= clazz.newInstance();
            Method[] methods 
= clazz.getMethods();
            
for(Method method:methods)
            
{
                
if(!method.getName().startsWith("set")) continue;
                
                String paraValue 
= getParaValueByMethodName(method.getName().substring(3));
                
if(paraValue==nullcontinue;
                
                Class
<?>[] types = method.getParameterTypes();
                
if(types==null || types.length==0)
                    
continue;
                
//                System.out.println("methodName=" + method.getName());
//                System.out.println("para=" + method.getName().substring(3));
//                System.out.println("paraValue=" + paraValue);
                
                
if(types[0].getName().equals("int"))
                   method.invoke(dto,Integer.parseInt(paraValue));
                
else if(types[0].getName().equals("long"))    
                   method.invoke(dto,Long.parseLong(paraValue));
                
else if(types[0].getName().equals("double"))    
                    method.invoke(dto,Double.parseDouble(paraValue));
                
else if(types[0].getName().equals("float"))    
                     method.invoke(dto,Float.parseFloat(paraValue));
                
else
                   method.invoke(dto,paraValue); 
//String    
            }

        }

        
catch(Exception e)
        
{
            SysLogger.error(
"BaseAction.extractData()",e);    
        }

        
return dto;
    }

    
    
private String getParaValueByMethodName(String para)
    
{
        String result 
= null;
        
for (Enumeration em = request.getParameterNames() ; em.hasMoreElements() ;)
        
{
            String name 
= (String)(em.nextElement());
            String temp 
= name.replaceAll("_","");
            
if(para.equalsIgnoreCase(temp))
            
{
                result 
= request.getParameter(name);
                
break;
            }

        }

        
return result;
    }

 

posted on 2007-05-04 20:56 afunms 阅读(123) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

My Links

News

留言簿(18)

随笔档案

相册

搜索

最新评论

阅读排行榜