在jsp页面,一个表单如果字段很多的话,要写很多request.getParameter(name)之类的代码,如果用web framework的话,则可以免去写这些代码的麻烦。但如果不用framework是否也可以达到参数自动填充的功能呢? 答案是肯定的。

    下面是我在就业网重构时用到的一个java类,其中就是对BeanUtils进行了简单的封装。

   import java.sql.Date;
   import java.util.Map;


   import org.apache.commons.beanutils.BeanUtils;
   import org.apache.commons.beanutils.ConvertUtils;
   import org.apache.commons.beanutils.converters.SqlDateConverter;

   public class NullSafeBeanUtils {
  

   public final static String EMPTY_STRING = "";
 
   public static boolean isNull(Object obj) {
       return obj == null;
   }

   public static String getProperty(Object bean, String property) {
       if (bean == null) {
            return EMPTY_STRING;
       }
     try {
          String str = BeanUtils.getProperty(bean, property);
          if (str == null) {
              return EMPTY_STRING;
         }
        return str;
     } catch (Exception e) {
         return EMPTY_STRING;
   }
  }

  public static void populate(Object bean, Map props) {
     if (bean == null) {
        return;
     }
    try {
     SqlDateConverter con = new SqlDateConverter(new Date(System.currentTimeMillis()));
      ConvertUtils.register(con, java.sql.Date.class);
      BeanUtils.populate(bean, props);
   } catch (Exception e) {
     e.printStackTrace();
   }
 }
 // 此处省略了一些其他代码
 }


 


    在这里,poplulate方法就是我用来自动填充参数的。要实现自动填充,只需简单调用此方法就行了。看一个例子:


    JobExperience jobExp = new JobExperience();

    NullSafeBeanUtils.populate(jobExp, request.getParameterMap());


   是不是简单了许多?要注意的是表单的各输入字段名要和bean的各属性名对应才能自动填充。另外NullSafeBeanUtils 的getProperty方法也很有用,可以避免写

   if (bean != null) {

      yyy = bean.getXXX()==null?"":bean.getXXX()

   }

   这样的代码,直接写NullSafeBeanUtils.getProperty(bean, "XXX")就可以了。

posted on 2006-08-24 12:35 bluestone 阅读(937) 评论(3)  编辑  收藏 所属分类: Java
Comments

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


网站导航: