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;
}
}
- ››Godaddy域名解析使用DNSPOD方法
- ››GOV.CN域名解析修改
- ››Google搜索引擎的奥秘
- ››Google测试搜索结果页面右侧内容更丰富的信息栏
- ››Google Dart精粹:应用构建,快照和隔离体
- ››google的代码审查
- ››google analytics清晰追踪爬虫的爬行信息
- ››Google+中文用户在两千万Google+大军中是少数派
- ››Google AdWords最昂贵点击成本的20种关键词分类
- ››Google运作经理Bryan Power给出的GOOGLE求职意见
- ››Google用户体验的十大设计原则
- ››Google Analytics(分析)能为网站带来什么
更多精彩
赞助商链接