在jsp頁面,一個(gè)表單如果字段很多的話,要寫很多request.getParameter(name)之類的代碼,如果用web framework的話,則可以免去寫這些代碼的麻煩。但如果不用framework是否也可以達(dá)到參數(shù)自動(dòng)填充的功能呢? 答案是肯定的。

          ??? 下面是我在就業(yè)網(wǎng)重構(gòu)時(shí)用到的一個(gè)java類,其中就是對(duì)BeanUtils進(jìn)行了簡(jiǎn)單的封裝。

          ???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方法就是我用來自動(dòng)填充參數(shù)的。要實(shí)現(xiàn)自動(dòng)填充,只需簡(jiǎn)單調(diào)用此方法就行了。看一個(gè)例子:


          ??? JobExperience jobExp = new JobExperience();

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


          ?? 是不是簡(jiǎn)單了許多?要注意的是表單的各輸入字段名要和bean的各屬性名對(duì)應(yīng)才能自動(dòng)填充。另外NullSafeBeanUtils 的getProperty方法也很有用,可以避免寫

          ?? if (bean != null) {

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

          ???}

          ?? 這樣的代碼,直接寫NullSafeBeanUtils.getProperty(bean, "XXX")就可以了。

          posted on 2006-08-24 12:35 bluestone 閱讀(950) 評(píng)論(3)  編輯  收藏 所屬分類: Java
          Comments

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
           
          主站蜘蛛池模板: 柳江县| 汽车| 东台市| 庆安县| 沛县| 资源县| 饶阳县| 常宁市| 大理市| 白银市| 靖江市| 临沭县| 道孚县| SHOW| 民乐县| 木里| 商洛市| 南城县| 汉川市| 元谋县| 宁阳县| 新安县| 吕梁市| 岫岩| 灵山县| 清远市| 木兰县| 崇义县| 和龙市| 勃利县| 北宁市| 台东县| 随州市| 武安市| 昭通市| 汉沽区| 临沭县| 韶关市| 宝坻区| 陵川县| 新泰市|