Go-ForIt 记事:eXtreme DragonSlayer 专题报告,第 5 部分: 视图 bean:将 Java 代码与 JSP 组件分离
2009-11-06 00:00:00 来源:WEB开发网图片看不清楚?请点击这里查看原图(大图)。
问题的本质
如上面的“添加之后”图所示,在“用户注册”示例上我们使用了两个视图 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;
}
}
- ››Google运作经理Bryan Power给出的GOOGLE求职意见
- ››Google用户体验的十大设计原则
- ››Google Analytics(分析)能为网站带来什么
- ››Google goggles图片搜索 如何优化一个wap网站
- ››Google Docs将增加iPhone和Android编辑功能
- ››Google Android操作系统内核编译图文教程
- ››google map api 与jquery结合使用--控件,监听器...
- ››google map api 与jquery结合使用(2) --标注,浮...
- ››google map api 与jquery结合使用(3) --图标样式...
- ››Google 首页代码分析及简评
- ››Got a packet bigger than ‘max_allowed_packet’...
- ››Google财经更新iPhone和Android版本
更多精彩
赞助商链接