四、客户端场景
构建标签库组件
- AjaxJavaScriptLibraryTag:此标签库组件在客户端呈现JavaScript功能,以实现基本XMLHTTP控制器功能。
- AjaxErrorHtmlRenderTag:此标签库组件在JSP页面呈现错误消息区域。
配置标签库定义
开发出标签库组件之后,我们需要配置清单3中显示的标签库tld文件。
清单3
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>ajaxLib</shortname>
![]()
<tag>
<name>library</name>
<tagclass>net.sf.ajax.taglib.AjaxJavaScriptLibrary
</tagclass>
<bodycontent>JSP</bodycontent>
</tag>
![]()
<tag>
<name>error</name>
<tagclass>net.sf.ajax.taglib.AjaxErrorHtmlRender
</tagclass>
<bodycontent>JSP</bodycontent>
<attribute>
<name>property</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>event</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
![]()
</taglib>
构建JSP和Struts配置
要模拟验证处理的结果,我们首先需要构建呈现层,方法是合并我们已经构建的标签库。在此例中,我试图给出一个示例验证(通过使用来自Struts的验证规则组件)以及来自表单本身的验证。准备五个JSP页面下的文本框。第一个到第四个文本框使用验证规则配置,第五个文本框使用来自动作表单的验证流程。除此之外,我们还需要一个提交按钮,以在提交表单后模拟它,现有的struts验证仍在没有AJAX的情况下工作。用户界面外观如图5所示。
构建动作和动作表单
为获得Struts动作,我们转到已经构建的JSP。此动作代码如下所示:
public ActionForward execute(...) {
return mapping.findForward("success");
}
如果输入为空,则此动作表单代码将验证requiredText属性。请记住,要从AjaxForm类扩展此表单。动作表单的验证方法如下所示:public ActionForward execute(...) {
return mapping.findForward("success");
}
public ActionErrors validate(...) ...{
ActionErrors errors = new ActionErrors();
if (StringUtils.isEmpty(this.requiredText)) ...{
errors.add("requiredText", new ActionError("error.required.input"));
}
request.setAttribute(Globals.ERROR_KEY, errors);
}