WEB开发网
开发学院软件开发Java Go-ForIt 记事:eXtreme DragonSlayer 专题报告,... 阅读

Go-ForIt 记事:eXtreme DragonSlayer 专题报告,第 5 部分: 视图 bean:将 Java 代码与 JSP 组件分离

 2009-11-06 00:00:00 来源:WEB开发网   
核心提示: 图片看不清楚?请点击这里查看原图(大图),问题的本质如上面的“添加之后”图所示,Go-ForIt 记事:eXtreme DragonSlayer 专题报告,第 5 部分: 视图 bean:将 Java 代码与 JSP 组件分离(5),在“用户注册”

图片看不清楚?请点击这里查看原图(大图)。

问题的本质

如上面的“添加之后”图所示,在“用户注册”示例上我们使用了两个视图 bean:PrefillsRegistrationJSPViewBean 和 ErrorViewBean。每个 bean 封装一段特定的供 JSP 调用的表示逻辑。根据上面的图,您可能会认为视图 bean 增加了复杂性。然而,虽然它们确实向设计中添加了更多组件,但它们带来的封装却能够在维护、测试和重用时为我们节约时间。

PrefillsRegistrationJSPView 的职责

PrefillsRegistrationJSPView bean(快点!说 它三遍)封装一个捕获(set 方法)用户早已输入某些表单域的数据,并在用户被引回到页面时将这些值预先填入表单(get 方法)的逻辑。使用这种设计,遇到错误(比如重复的用户标识)的用户将回到表单,且只须更改用户标识,而不必重新输入整个表单。 下面的代码摘自 PrefillsRegistrationJSPView.java。这段代码并不显示全部类定义,但显示域声明及一个复选框属性(顾客)和一个列表框属性(称谓)的 getter 和 setter 方法。需要相当多的逻辑来预先填充一个小列表框和一个复选框。


PrefillsRegistrationJSPView.java
\** This is an excerpt from PrefillsRegistrationJSPView **\ 
 
public class PrefillRegistrationJSPView { 
  private String _prefillTypeCustomer = null; 
  private java.lang.String _prefillTitle = null; 
  private java.lang.String[] _titles = { 
   "", "Mr.", "Mrs.", "Ms.", "Miss" 
   }; 
 
  . . . 
 
}; 
 
public String getCustomerChecked() { 
 
  if (_prefillTypeCustomer != null) 
   return "checked"; 
  else     
   return null; 
} 
 
public java.lang.String getTitleSelect() { 
  StringBuffer list = new StringBuffer(); 
  list.append("<SELECT size=\"1\" name=\"title\">\n"); 
 
  //Nothing prefilled. Use 1st option as the default 
  if((this._prefillTitle == null) || (this._prefillTitle.equals(""))) 
   { 
   for (int i = 0; i < _titles.length; i++) { 
     list.append("<OPTION"); 
     if (i == 0) { 
      list.append(" SELECTED>" + _titles[0]); 
     } 
     else { 
     list.append(">" + _titles[i]); 
     } 
     list.append("</OPTION>\n"); 
   } 
  } 
  else { 
   // Prefill previously selected value 
     for (int i = 0; i < _titles.length; i++) { 
      list.append("<OPTION"); 
      if (_titles[i].equals(_prefillTitle)) { 
        list.append(" SELECTED>" + _titles[i]); 
      } 
      else { 
      list.append(">" + _titles[i]); 
        } 
      list.append("</OPTION>\n"); 
      } 
     } 
   list.append("</SELECT>"); 
   return list.toString(); 
} 
 
public void setCustomerChecked(String val) { 
    _prefillTypeCustomer = val; 
} 
 
public void setInitialTitle(java.lang.String prefillTitle) { 
    _prefillTitle = prefillTitle; 
} 
} 

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Go ForIt 记事

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接