在jsp頁(yè)面,一個(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方法就是我用來(lái)自動(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 閱讀(947) 評(píng)論(3)  編輯  收藏 所屬分類: Java
          Comments

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


          網(wǎng)站導(dǎo)航:
           
           
          主站蜘蛛池模板: 荥阳市| 乌鲁木齐市| 哈密市| 集安市| 静宁县| 桐梓县| 锡林郭勒盟| 磴口县| 石河子市| 芦山县| 宣武区| 同德县| 宜兰市| 北海市| 宁津县| 沂源县| 潢川县| 寻乌县| 正定县| 贡山| 潮州市| 星子县| 依安县| 毕节市| 通海县| 襄城县| 嫩江县| 施秉县| 镇宁| 静安区| 石阡县| 肃北| 灯塔市| 中山市| 吉木萨尔县| 理塘县| 洱源县| 韩城市| 江孜县| 鄯善县| 九寨沟县|